[Swift] 백준 1065번 한수
문제 출처: 백준 1065번 한수
문제
풀이
저한테는 난이도가 좀 있는 문제였는데요… 우선 문제를 살펴보시면 99 이하의 자연수는 모두 한수입니다. 최대 자릿수가 2인데요 이 숫자들의 차이가 무엇이 되든 일정하다고 보기 때문에 입력값이 99 이하라면 그냥 그 수를 출력하면 됩니다. 그 이후엔 1,000이하의 자연수 이므로 1,000은 이미 한수가 아니므로 계산해야 할 숫자의 자릿수는 세 자리 라는 점을 이용해 풀면 어렵지 않게 풀 수 있습니다.
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
/// 자연수 N
let N = Int(readLine()!)!
// 99이하일 경우 N출력
if N < 100 {
print(N)
} else {
// 99까지 한수의 개수
var count = 99
// 100부터 N까지 반복문 실행
for i in 100...N {
// 각 자리수 저장
let first = i / 100
let second = (i % 100) / 10
let third = (i % 100) % 10
// 한수인지 판단
if first - second == second - third {
count += 1
}
}
// 결과 출력
print(count)
}
}
- 숫자를 입력받아 Int 형으로 변환합니다.
- 입력받은 수가 100보다 작으면 입력받은 수를 바로 출력합니다.
- 100 이상일 경우 100부터 N까지 반복문을 실행합니다.
- 100부터 각 숫자의 자릿수를 구해 한수인지 판단 후 count를 증가시킵니다.
이렇게 풀 경우 메모리: 64044 KB, 시간: 8 ms 결과가 나오게 됩니다.
댓글남기기