코딩가딩가

[JAVA]BOJ 10250, ACM 호텔

Noooodle 2024. 7. 17. 18:02

 

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

 

내가 그린 빨간 선 순서대로 방을 주면 된다.

문제 예시에 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