let num = Int(readLine()!)!
for _ in 1...num {
let tmp = readLine()!.split(separator: " ").map{ Int($0)! }
let H = tmp[0]
let N = tmp[2]
let h = (N - 1) % H + 1 // 99 % 10 + 1 // 9 % 7 == 2
let w = (N - 1) / H + 1
let wString = w < 10 ? "0\(w)" : "\(w)"
print("\(h)\(wString)")
}
- H는 층 수, W는 방 수, N은 사람 수 를 의미합니다.
- 배정되어야 하는 층 수는 나머지를 통해서 구할 수 있습니다.
나머지로 구현했을 때 실수하는 부분
- 예를 들어 입력값이 6 12 10이라면 N % H 를 통해서 4 층에 배정해야 한다는 것을 구할 수 있습니다.
하지만 만약 10 10 100 과 같이 N % H 의 값이 0이라면? 성립하지 않고 1010호, 즉 10층에 배정되어야 하지만 0의 결과가 나오게 됩니다. 그렇기 때문에 N에서 1을 빼고 마지막 결과값에 1을 더해주면 N과 H가 같다 하더라도 제대로된 결과값을 얻을 수 있게 됩니다.
추가로 w 호실을 구할 때도 마찬가지로 (N / H) + 1 의 값으로 구할 것 같지만 똑같이 10 10 100은 1010의 값을 출력해야 하지만 1001의 값이 나오게 됩니다. 하지만 N에서 1을 빼고 연산 후 마지막 결과값에 1을 더해주면 원하는 결과를 얻을 수 있게 됩니다.
'Algorithm > Baekjoon' 카테고리의 다른 글
Swift 백준 1181 단어 정렬 (0) | 2024.07.22 |
---|---|
Swift 백준 1259 팰린드롬수 (reversed) (0) | 2024.07.21 |
swift 백준 11654, 2744, 2754, 27866, 9086 (문자열) (0) | 2024.07.16 |
swift 백준 10871, 10807, 5597, 2738 (배열) (0) | 2024.07.15 |
swift 백준 2741, 10872, 10950, 2420, 2753 (반복) (0) | 2024.07.14 |