💡 Algorithm/백준

[JAVA] 백준 #10250 - ACM 호텔

현주먹 2023. 10. 19. 23:40

 

10250번: ACM 호텔

프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각 테스트 데이터는 한 행으로서 H, W, N, 세 정수

www.acmicpc.net

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int testCnt = sc.nextInt();

        for (int i = 0; i < testCnt; i++) {
            int floor = sc.nextInt(); // 층수 입력
            int room = sc.nextInt(); // 방 수 입력
            int customer = sc.nextInt(); // 손님 순서 입력

            int cFloor = customer % floor;
            int cRoom = customer / floor;
            System.out.println(cFloor);
            System.out.println(cRoom);
            //손님이 각 층의 마지막 손님일 때
            if(cFloor == 0){
                cFloor = floor;
            }else {
                cRoom += 1;
            }

            System.out.printf("%d%02d%n", cFloor, cRoom);
        }
    }
}

 

풀이

6층이고 12개의 방이 있을 때, 손님이 10번째로 들어온다.

손님 순서 % 층 = 하면 채워지고 남은 나머지가 손님의 층수다.

ex) 10 % 6 = 4

손님 순서 / 층 = 하면 손님의 방번호 앞자리를 추출할 수 있다.

ex) 10 / 6 = 1.66666….

손님이 층의 마지막 번호라면 층수가 0이 되므로 입력받은 층을 넣어줘야한다.

 

다른 풀이

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;

int t = Integer.parseInt(br.readLine());

for (int i = 0; i < t; i++)
{
    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)
    {
        System.out.println((h * 100) + (n / h));
    }
    else
    {
        System.out.println((n % h * 100) + (n / h + 1));
    }
 }

br.close();

계산을 바로 표시해주는 방법.

층수 * 100하면 400이 되므로 + 룸넘버한다..