얼레벌레
[Baekjoon] 한수 본문
문제
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
예제 입력 1
110
예제 출력 1
99
예제 입력 2
1
예제 출력 2
1
예제 입력 3
210
예제 출력 3
105
예제 입력 4
1000
예제 출력 4
144
예제 입력 5
500
예제 출력 5
119
▪️내가 생각한 코드 ҉ ٩(๑>ω<๑)۶҉
N = int(input())
def numCheck(i):
l = len(str(i))
sumSet = set(map(lambda x: int(str(i)[x]) - int(str(i)[x+1]), range(l-1)))
return len(sumSet)
def seq(N):
i, cnt = 1, 0
while i <= N:
if (i <= 99) | (numCheck(i) == 1):
cnt += 1
else:
pass
i += 1
return cnt
print(seq(N))
✔️ 배운 것
- brute-force search
- set,map,lambda
- while문에서의 pass와 continue의 차이점
- continue: 해당 경우에 해당한다면, continue아래의 코드는 모두 실행하지 않는다. 처음에 continue로 했다가 i가 늘어나 있질 않아서 당황했다
- pass: 해당 경우에 해당한다면, 다른 코드 실행 없이 다음으로 넘어간다.
- else: pass 를 쓰는 경우와 쓰지 않는 경우의 속도 차이
숫자 하나만 받아오는 경우 input이 sys.stdin.readline보다 시간이 약간 빨랐다.
그리고 else: pass를 써서 넘기는 경우와 그렇지 않은 경우에 속도 차이가 매우매우 컸다 (68ms / 96ms)
'Coding Test' 카테고리의 다른 글
[Baekjoon] 알파벳 찾기 (0) | 2022.02.17 |
---|---|
[Baekjoon] 주사위 세개 (0) | 2022.02.16 |
[Baekjoon] OX퀴즈 (0) | 2022.02.14 |
[Programmers/Python3] 숫자 문자열과 영단어 (0) | 2022.02.08 |
[Programmers/Python3] 최소직사각형 (0) | 2022.02.05 |
Comments