티스토리 뷰

문제

- 호텔 정문으로부터 걸어서 가장 짧은 거리에 있는 방을 배정

- 호텔 정문은 일층 엘리베이터 바로 앞에 있음

- 정문에서 엘리베이터까지의 거리는 무시

- 엘리베이터는 건물의 가장 왼쪽에 위치

- 모든 인접한 두 방 사이의 거리는 같은 거리라고 가정

- 호텔의 정면 쪽에만 방이 있다고 가정

 

해결방법

주어진 손님을 방에 배치하기 위해서는 그 손님이 몇 층, 몇 번째 방에 묵어야하는지를 구해야 한다. 가장 가까운 위치부터 배치를 하려면 각 층의 1호부터 손님을 배치해야 한다. 1호부터 각 층별로 손님을 배치해야 하므로 주어진 N번째 방을 찾기 위해서는 H인 층수로 나누어 계산을 해줄 수 있어야 한다. 말로 풀어서 쓰면 헷갈릴 수도 있겠지만, 코드를 보면 바로 이해가 될 것이다.

 

코드

import java.io.*;
import java.util.*;

class Main {

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int T = Integer.parseInt(br.readLine());

        for(int tc = 1; tc<=T; tc++){
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            int H = Integer.parseInt(st.nextToken());		// 건물 높이
            int W = Integer.parseInt(st.nextToken());		// 건물 호수
            int N = Integer.parseInt(st.nextToken());		// N번째 방

            // 손님이 묵어야 할 순서가 꼭대기 층에 위치한다면
            if(N % H == 0) System.out.println((H * 100) + N / H);
            // 손님이 묵어야 할 순서가 꼭대기 층이 아니라면
            // 나누어 떨어진 것이 아니었기 때문에 호수를 구하기 위해서는 나누어 떨어진만큼 계산하고 1만큼 더 계산해준다.
            else System.out.println(((N % H) * 100) + ((N / H) + 1));
        }

        br.close();
    }
}

'Algorithm > Baekjoon' 카테고리의 다른 글

[백준] 10814번 나이순 정렬(JAVA)  (0) 2022.07.25
[백준] 10773번 제로(JAVA)  (0) 2022.07.25
[백준] 9012번 괄호(JAVA)  (0) 2022.07.22
[백준] 7568번 덩치(JAVA)  (0) 2022.07.22
[백준] 4949번 균형잡힌 세상(JAVA)  (0) 2022.07.22
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday