
문제

내 풀이 1 : Math.max(R,C)로 한 뒤 나누기 - 실패
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main extends Exception {
public static void main(String[] args) throws IOException {
// 가로 R 세로 C, CCTV가 수용 가능한 N*N 주어진다.
// cctv는 정사각형만 찍을 수 있으므로, R*C로 구할 수 없다.
// 그러므로 R이나 C 중 더 큰 범위의 수로 곱한 뒤, 나눠줘야 모두 촬영할 수 있다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine());
long R = Long.parseLong(st.nextToken());
long C = Long.parseLong(st.nextToken());
long N = Long.parseLong(st.nextToken());
long math_max = Math.max(R,C);
long answer = (math_max * math_max) / (N * N);
sb.append(answer);
System.out.println(sb.toString());
}
}
내 풀이 2 : 풀이 아예 다르게 하기
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main extends Exception {
public static void main(String[] args) throws IOException {
// (R / N) , (C / N) 따로 구한다
// 각 값이 나머지가 있을 때에는 +1 한다.
// 그 후 곱한다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine());
long R = Long.parseLong(st.nextToken());
long C = Long.parseLong(st.nextToken());
long N = Long.parseLong(st.nextToken());
long garo = 0;
long sero = 0;
if (R % N == 0){
garo = R / N;
}else{
garo = (R/N) + 1;
}
if (C % N == 0){
sero = C / N;
}else{
sero = (C/N) + 1;
}
long answer = garo * sero;
sb.append(answer);
System.out.println(sb.toString());
}
}
느낀점
문제를 너무 어렵게 해석하지 말자