취미가 좋다
1065. 한수 본문
https://www.acmicpc.net/problem/1065
Solution
N = int(input())
ans = 0
r = None
for num in range(1, N+1):
a = num % 10
num = int(num / 10)
while(True):
if num == 0 :
ans += 1
r = None
break
b = num % 10
num = int(num / 10)
if r == None:
r = a-b
elif r != a-b:
r = None
break
a = b
print(ans)
- for문으로 1부터 입력받은 수까지 하나씩 조건을 살펴본다.
- 그 수의 각 자리수와 이전 자리수와의 차이가 끝까지 일치하면 ans를 더한다.
- 차이가 달라지면 break로 while문을 빠져나온다.
- 더 짧고 간단한 방법이 있을 것 같았다.
another
N = int(input())
ans = 0
for num in range(1, N+1):
if num < 100 or ( num//100 + num%10 == 2*((num%100)//10) ):
ans += 1
print(ans)
- 입력이 1000 이하의 자연수라는 조건때문에, 위의 코드가 가능하다.
- 만약 2자리 수 자연수라면 모든 수가 조건을 만족한다.
- 만약 3자리 수가 abc라고 한다면 a-b = b-c 이어야 한다. 이는 a+c = 2*b 로 볼 수 있다.
- num//100 = a, num%10 = c, (num%100)//10 = b 이다.
- '//' 는 몫의 자연수를, '%' 는 나머지를 구한다.
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
22868. 산책 (small) (0) | 2021.09.04 |
---|---|
14890. 경사로 (0) | 2021.08.26 |
1018. 체스판 다시 칠하기 (0) | 2021.08.14 |
7568. 덩치 (0) | 2021.08.13 |
2231. 분해합 (0) | 2021.08.13 |
Comments