BAEKJOON : 1065
No. 1065
1. Problem
2. My Solution
- 한자리와 두자리 수는 모두 한수임 (연속된 두 수의 차이가 다르다고 볼 수 없기 때문)
- 등차수열 판단 중에 차이값이 하나라도 다르면 연산 종료
import sys
def func(num):
global count
numList = list(map(int,list(str(num))))
d1 = numList[0] - numList[1]
for i in range(1,len(numList)-1):
d2 = numList[i] - numList[i+1]
if d1 != d2:
return
count += 1
n = int(sys.stdin.readline().strip())
count = 0
if n < 100:
count = n
else:
for num in range(100,n+1):
func(num)
count += 99
print(count)
3. Others' Solutions
- 연속된 두 수의 차이들이 모두 같은지 아닌지 판별하기 위해 set 자료형 이용
- 차이값들의 집합 요소 개수가 1이면 등차수열임 (모두 중복 = 모두 같음)
- 100이 아닌 10부터 적용해도 같은 결과
- 내 코드와 비교했을 때, 연속된 두 값의 차이값을 모두 구해야 함
import sys
def func(num):
global count
numList = list(map(int,list(str(num))))
valid = set()
for i in range(0,len(numList)-1):
valid.add(numList[i] - numList[i+1])
if len(valid) == 1: # 모두 같은 값 (=등차수열)
count += 1
n = int(sys.stdin.readline().strip())
count = 0
if n < 100:
count = n
else:
for num in range(100,n+1):
func(num)
count += 99
print(count)
4. Learned
-
전역변수를 함수내에서 변경하기 위해선 함수내에서 global 지정해야함 (숫자 자료형만 해당)
단지 읽는 것은 global 키워드를 지정하지 않아도됨 -
모두 같은 값인지 판별하기 위해서는 set 자료형을 사용해보자
Author And Source
이 문제에 관하여(BAEKJOON : 1065), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@codren/BAEKJOON-1065저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)