https://www.acmicpc.net/problem/1065
나의 답
def check(i):
if (len(str(i))<=2):
return True
diff = int(str(i)[1]) - int(str(i)[0])
for index in range (1,len(str(i))):
if (diff != int(str(i)[index]) - int(str(i)[index-1])):
return False
return True
N = int(input())
cnt = 0
for i in range(1,N+1):
if check(i):
cnt+=1
print(cnt)
N을 입력받으면 1~N까지 수에 등차수열인 수가 몇 개 있는 지 카운트하면 된다.
등차수열을 확인하고자 길이가 2 미만이면 등차수열이라고 판단했고,
길이가 3이상이면 첫번째 수와 두번째 수의 차이를 알아내서 그 다음 수 사이의 diff값이랑 동일한 지 확인했다.
다른 사람 답
n = int(input())
hansu = 0
for i in range(1, n+1):
if i < 100:
hansu += 1
if i >= 100:
temp1 = int(str(i)[0]) - int(str(i)[1])
temp2 = int(str(i)[1]) - int(str(i)[2])
if temp1 == temp2:
hansu+=1
print(hansu)
출처: https://ittrue.tistory.com/69 [IT is True:티스토리]
접근 방식은 비슷한 듯 싶다 !
Kotlin Version 답
import java.util.Scanner
fun check(i: Int): Boolean {
if (i < 100) return true // 100미만의 수는 모두 한수
val numStr = i.toString()
val diff = numStr[1] - numStr[0]
for (index in 1 until numStr.length) {
if (diff != numStr[index] - numStr[index - 1]) {
return false
}
}
return true
}
fun main() {
val scanner = Scanner(System.`in`)
val N = scanner.nextInt()
var cnt = 0
for (i in 1..N) {
if (check(i)) {
cnt++
}
}
println(cnt)
}
Key Point
- i.toString
- for (index in 1 until N)
- for(index in 1..N)
'코딩테스트' 카테고리의 다른 글
[Python] 백준 - 덩치 (0) | 2024.05.14 |
---|---|
[Python] 백준 - 퇴사 (0) | 2024.05.13 |
[Python] 백준 - 블랙잭 (0) | 2024.05.13 |
[Python] 백준 - 영화감독 숌 (0) | 2024.05.10 |
[Python] 백준 - 수 이어쓰기 1 (0) | 2024.05.09 |