728x90
https://www.acmicpc.net/problem/23971
문제 요약 : 강의실에는 테이블이 W개씩 H행개 있다. 모든 참여자는 세로로 N칸, 가로로 M칸 띄우고 앉아야한다. 최대 몇명 수용할 수 있나요?
예제 입력 1
5 4 1 1
예제 출력 1
6
📌 풀이 1 )
N,M칸 띄우고 앉아야하기 때문에 각각에 N+1, M+1 값으로 나누어 주었다.
그러나, 몫만 가져오게 되면 5/2 의 경우나 4/2의 경우나 마찬가지로 2가 나오게된다. 그러나, 5/2에서 필요한 것은 3이기 때문에 ceil을 통해 올림을 해주었다.
그렇게 풀면 될 것 같아서 풀었지 정확히 왜 올림을 해야 답이 나오는지는 명확하지 않은 기분이였다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) throws IOException {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int H = Integer.valueOf(st.nextToken());
int W = Integer.valueOf(st.nextToken());
int N = Integer.valueOf(st.nextToken());
int M = Integer.valueOf(st.nextToken());
int w = (int)Math.ceil((double) W/(M+1));
int h = (int)Math.ceil((double) H/(N+1));
System.out.print(w*h);
}
}
📌 풀이 2 )
일단 제일앞자리에는 언제나 학생이 앉는다. 그래서 W와 H에는 -1을 해준다.
N,M칸 띄우고 앉아야하기 때문에 각각에 N+1, M+1 값으로 나누어 주었다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) throws IOException {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int H = Integer.valueOf(st.nextToken());
int W = Integer.valueOf(st.nextToken());
int N = Integer.valueOf(st.nextToken());
int M = Integer.valueOf(st.nextToken());
int w = (W-1)/(M+1)+1;
int h = (H-1)/(N+1)+1;
System.out.print(w*h);
}
}
728x90
'코테 공부 🔥' 카테고리의 다른 글
[백준/파이썬] 1041: 주사위 (1) | 2023.04.17 |
---|---|
[백준/파이썬] 10942: 팰린드롬? (0) | 2023.04.17 |
[백준/파이썬] 9657: 돌 게임3 (1) | 2023.04.11 |
[백준/파이썬] 5052: 전화번호 목록 (0) | 2023.04.06 |
[백준/파이썬] 2166 : 다각형의 면적 (0) | 2023.04.05 |
댓글