티스토리 뷰
728x90
문제
- 호텔 정문으로부터 걸어서 가장 짧은 거리에 있는 방을 배정
- 호텔 정문은 일층 엘리베이터 바로 앞에 있음
- 정문에서 엘리베이터까지의 거리는 무시
- 엘리베이터는 건물의 가장 왼쪽에 위치
- 모든 인접한 두 방 사이의 거리는 같은 거리라고 가정
- 호텔의 정면 쪽에만 방이 있다고 가정
해결방법
주어진 손님을 방에 배치하기 위해서는 그 손님이 몇 층, 몇 번째 방에 묵어야하는지를 구해야 한다. 가장 가까운 위치부터 배치를 하려면 각 층의 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();
}
}
728x90
'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 |
댓글