TIL/알고리즘 공부
백준 10250번 Swift 알고리즘 연습
여의도사노비
2022. 8. 26. 17:32
728x90
아래에서부터 위로 순서대로 자리를 배치하는 문제이다.
이 문제를 풀면서 생각한 논리적 흐름은
- n번째로 들른 사람을 층으로 나눴을 때 나오는 값에 1을 더해준 값이 '호실' 번호이다.
- n번째로 들른 사람을 층으로 나눴을 때 나오는 나머지가 '층' 번호이다.
- 이때 층과 n의 값이 같을 경우 그 층 맨 꼭대기에 사는 케이스이므로 값을 '층'으로 고정시켜주어야한다.
- 만약 '호실'의 값이 10을 넘지 않으면 '401호'와 같은 값이 나올때 '41호'로 출력될 수 있으니
- 10보다 낮은 값엔 앞자리에 0을 붙여준다.
점점 경우의 수와 분리해서 생각해야할 케이스 수가 늘어남에 따라 머리가 아프다 ^^...
평소에 수학 논리를 확인할 때 직접 손으로 풀어서 정리하는 경우가 대부분이었어서 그런지 조금만 복잡해도 머리 속으로 계산이 안된다..!
앞으로는 무겁지만 노트북과 아이패드 두개를 들고 다녀야 할 것 같다 ㅠㅠ
* 10250번
let count = Int(readLine()!)!
for _ in 1...count {
let input = readLine()!.split(separator: " ").map { Int(String($0))! }
let value = input[2] / input[0]
let remain = input[2] % input[0]
if remain == 0 {
if value >= 10 {
print("\(input[0])\(value)")
} else {
print("\(input[0])0\(value)")
}
} else {
if (value + 1) >= 10 {
print("\(remain)\(value+1)")
} else {
print("\(remain)0\(value+1)")
}
}
}
정리(Today I Learned)
- 없음