10250번: ACM 호텔
let T = Int(readLine()!)!
(0..<T).forEach { _ in
let inputs = readLine()!.split(separator: " ").map { Int(String($0))! }
let H = inputs[0]
let _ = inputs[1]
let n = inputs[2]
let h = (n - 1) % H + 1
let w = (n - 1) / H + 1
let wString = w < 10 ? "0\(w)" : "\(w)"
print("\(h)\(wString)")
}
- 나머지와 묷을 이용해서 호수를 구하면 됩니다.
- 층수를 구할 때는 나머지를 사용합니다.
- 하지만 그냥 n을 H로 나누는 경우 나머지가 0일 때 H층에 배정되는 것을 계산하기 쉽지 않습니다.
- 이런 경우에 (n - 1)에서 H를 나눈 다음에 + 1을 하는 방법으로 나머지의 범위를 0 ~ (H - 1)에서 1 ~ H로 바꾸어 줄 수 있습니다.
- 호수를 구할 때는 몫을 사용합니다.
- 마찬가지로 그냥 n을 H로 나누는 경우 몫이 0인 경우에 W호에 배치되는 것을 계산하기 쉽지 않습니다.
- 똑같이 (n - 1)을 H로 나눈 몫에 + 1을 사용하면 몫의 범위를 0 ~ (W - 1)에서 1 ~ W로 바꿀 수 있습니다.
- 마지막으로 w는 그대로 사용하면 안되고 한 자리수인 경우에는 “0w”의 형식으로 바꾸어야 합니다.