
문제는 길어서 읽기부터 겁나지만.. 사실 되게 쉬운 문제다.

내가 그린 빨간 선 순서대로 방을 주면 된다.
문제 예시에 6*12 호텔에 10번째 손님은 10 = 6 + 4, 즉 좌에서 두 번째줄 밑에서 4번째 방을 주면 된다. 402호이다.
30*50 호텔에 72번째 손님은 72 = 30 + 30 + 12, 좌에서 세 번째줄 밑에서 12번째 방을 주면 된다. 1203호 이다.
한 가지 신경써야 할 부분은, 호수가 두 자리를 넘어가는 경우이다. X01호, X02호 ... X09호 까지는 '0 + 좌에서 몇번째인지' 를 주면 되는데, X10호, X11호 .. 등 두자리를 넘어가는 경우는 앞에 0을 빼고 '좌에서 몇번째인지'만 써주면 된다.
W는 입력은 받지만 사실상 쓰지 않는다. 입력할때 호텔 방 크기보다 큰 값은 받지 않기 때문이다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BOJ10250 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T, H, W, N, i, j;
String str;
StringTokenizer st;
T = Integer.parseInt(br.readLine());
for(i=0;i<T;i++){
// 입력
str = br.readLine();
st = new StringTokenizer(str);
H = Integer.parseInt(st.nextToken());
W = Integer.parseInt(st.nextToken());
N = Integer.parseInt(st.nextToken());
// 좌에서 몇 번째 인지 찾기
for(j=0;N>H;j++){
N -= H;
}
if(j<9) // 두자리수인 경우 다르게 출력해야함
System.out.println(N+"0"+(j + 1));
else
System.out.println(N+""+(j + 1));
}
}
}
'코딩가딩가' 카테고리의 다른 글
| [JAVA]BOJ 1181, 단어 정렬 (1) | 2024.07.24 |
|---|---|
| [JAVA]BOJ 2840, 행운의 바퀴 (0) | 2024.07.21 |
| [JAVA]BOJ 3058, 짝수를 찾아라 (0) | 2024.07.17 |
| [JAVA]BOJ 11068, 회문인 수 (0) | 2024.07.17 |
| [JAVA]BOJ 11005, 진법 변환 2 (0) | 2024.07.13 |