Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- rxjava hot observable
- 서비스 vs 쓰레드
- 큐 자바 코드
- 서비스 쓰레드 차이
- ANR이란
- 안드로이드 라이선스 종류
- 안드로이드 레트로핏 사용법
- 안드로이드 라이선스
- 안드로이드 유닛 테스트
- ar vr 차이
- 플러터 설치 2022
- 객체
- rxjava disposable
- 안드로이드 유닛테스트란
- 2022 플러터 안드로이드 스튜디오
- android retrofit login
- 멤버변수
- rxjava cold observable
- jvm이란
- 스택 큐 차이
- 2022 플러터 설치
- jvm 작동 원리
- Rxjava Observable
- 안드로이드 유닛 테스트 예시
- 클래스
- 스택 자바 코드
- android ar 개발
- 안드로이드 레트로핏 crud
- 자바 다형성
- 안드로이드 os 구조
Archives
- Today
- Total
나만을 위한 블로그
[Algorithm] 백준 - ACM 호텔 (10250) (Kotlin) 본문
728x90
반응형
아래는 전체 코드다.
fun main() {
val t = readln().toInt()
repeat(t) {
val (h, w, n) = readln().split(" ").map { it.toInt() }
val floor = if (n % h == 0) h else n % h
val room = if (n % h == 0) n / h else n / h + 1
println("$floor${String.format("%02d", room)}")
}
}
문제의 조건은 아래와 같다.
- 각 층 왼쪽부터 차례대로 방이 있고 모두 비어있는 상태다
- 손님은 1층부터 위쪽으로 방이 배정된다 (101 -> 201 -> 301 순)
- 각 층이 모두 차면 그 다음 방 번호로 넘어간다 (6층이 최상층인 경우 101 -> 201 -> ... -> 601 -> 102 -> 202 순)
6층 건물에 10번째 손님이 왔다면 이 손님에게 배정될 방은 10 % 6 = 4층이다.
왜냐면 6층 건물이라면 6번째 손님이 601호를 배정받으면서 각 층별 1번째 방은 모두 배정된 상태가 된다. 그러면 다시 102호부터 한 층씩 올라가야 6번째 손님 이후로 오는 손님들이 몇 층에 배정될지 알 수 있다.
그래서 %를 사용해 나머지를 구하면 6 + n번 손님이 몇 층에 배정될지 알 수 있다.
방 번호의 경우 (10 / 6) + 1 = 2번째 방을 배정받아야 한다.
왜냐면 앞서 말한대로 1번째 방은 이미 모두 배정됐다. 이 상태에서 중복 배정될 수는 없기 때문에 1을 더해서 그 다음 방을 배정해야 한다.
그래서 나머지 연산이 아니라 나누기 연산으로 구한 몫에 1을 더하면 결과적으로 402호를 배정받게 된다.
다른 예를 확인한다. h = 30, w = 50, n = 72인 경우 72번 손님이 배정받을 방 번호를 구하면 아래와 같다
- 층 : 72 % 30 = 12층
- 방 번호 : 72 / 30 + 1 = 3번째 방
- 즉 1203호를 배정받는다
그러나 출력하는 건 다른 문제다. 각 예시에서 구한 숫자는 4와 2, 12와 3인데 두 숫자를 그냥 이어붙이면 42, 123이 되서 호텔 방 넘버링과는 맞지 않기 때문이다.
층 수는 무시하고 방 번호가 1자리 수인 경우만 고려하면 되기 때문에 String.format()을 써서 출력한다. 그러면 402, 1203과 같이 출력되서 문제를 통과할 수 있다.
반응형
'알고리즘 문제 풀이 > 백준' 카테고리의 다른 글
[Algorithm] 백준 - 문자열 반복 (2675) (Kotlin) (0) | 2024.07.06 |
---|---|
[Algorithm] 백준 - 단어의 개수 (1152) (Kotlin) (0) | 2024.07.06 |
[Algorithm] 백준 - 알람 시계 (2884) (Kotlin) (0) | 2024.07.06 |
[Algorithm] 백준 - 아스키 코드 (11654) (Kotlin) (0) | 2024.06.07 |
[Algorithm] 백준 - 알파벳 찾기 (10809) (Kotlin) (0) | 2024.06.07 |
Comments