문제의 길이를 보고 좀 겁먹었는데 의외로 금방 풀 수 있었다.
101 - 201 - 301 - 401 - 501 - 601 - 102 - 202 - 302 - 402 - 502 - 602
같은 순서로 방이 배정되는데
테스트케이스의 개수를 T
건물의 층수를 H
한 층의 객실수를 W
방을 배정해야 할 손님의 번호를 N
라고 했을 때
층수는 N % H라는 걸 알 수 있다.
이때 주의해야 할 점이 있는데
N이 12고 H가 6이라면 원래대로라면 6층에 배정이되어야 하는데 나머지가 0이라서 0층에 배정되는 문제가 발생한다.
필자도 채점을 해보니 자꾸 오답이 나와서 왜인지 고민을 해보니 이 부분을 처리하지 않은 게 문제였다.
아무튼 N이 H로 나눠떨어질 때에는 H 그 자체가 층수가 된다.
이제 호수를 구해보자.
호수도 N이 H로 나눠떨어질 때와 그렇지 않을 때 두 경우로 나뉘는데
나눠떨어지는 경우는 N을 H로 나눈 몫, 즉 N/H이 호수가 된다.
그리고 그렇지 않은 경우는 (N/H)+1이 호수가 된다.
결론은
N%H==0일 때와 N%H!=0일 때 각각 층수와 호수를 구해서
층수*100 + 호수를 구해 출력해주면 된다.
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main{
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine()); // 테스트케이스의 개수를 입력받음
for(int i=0;i<T;i++){
StringTokenizer st = new StringTokenizer(br.readLine()," ");
int H = Integer.parseInt(st.nextToken());
int W = Integer.parseInt(st.nextToken());
int N = Integer.parseInt(st.nextToken());
if(N%H!=0){ // N이 H로 나눠떨어지지 않는 경우
// 층수는 N%H이고
// 호수는 (N/H)+1
System.out.println(((N%H)*100)+(N/H)+1);
}
else{ // N이 H로 나눠떨어지는 경우
// 층수는 H이고
// 호수는 (N/H)
System.out.println((H*100)+(N/H));
}
}
}
}
'[BOJ] - JAVA' 카테고리의 다른 글
[백준] 2775 : 부녀회장이 될 테야 JAVA 풀이 (0) | 2022.05.17 |
---|---|
[백준] 2839 : 설탕 배달 JAVA 풀이 (0) | 2022.05.17 |
[백준] 2869 : 달팽이는 올라가고 싶다 JAVA 풀이 (0) | 2022.05.17 |
[백준] 1193 : 분수찾기 JAVA 풀이 (0) | 2022.05.17 |
[백준] 2292 : 벌집 JAVA 풀이 (0) | 2022.05.16 |