백준 1065 한수
12 Jun 2021 | 기초 나중에 살펴보기 백준 TIL사고 과정
100미만이면 입력한 수를 출력하고, 100이상이면 공차가 같은 수들의 리스트를 구해서
(일의자리 - 십의자리 = 십의자리 - 백의자리 )그 수들의 갯수 +99 를 출력한다.
n = int(input())
if n < 100:
print(n)
if n => 100: #비교연산자 위치 틀렸다
for i in range(100,n):
#num = list(map(int, str(i))) 넣어야함
if num[2] - num[1] = num[1] - num[0]:
nums.add(num)
print(len(nums)+99)
제출 답안 1
n = int(input())
nums = set()
#그냥 nums=[]했더니 리스트에는 add함수가 없다고 해서 set으로 만들었다
if n < 100:
print(n)
if n >= 100: #크거나 같다 비교연산자
for i in range(100,n+1):
#n이 포함되려면 1을 더해야한다
hund = int(i / 100)
ten = int((i % 100) / 10)
one = int(i % 10)
#인터넷에서 찾은 각 자리수별 숫자 추출법
if hund - ten == ten - one:
nums.add(i)
print(len(nums)+99)
제출 답안 2
n = int(input())
nums = set()
if n < 100:
print(n)
if n >= 100:
for i in range(100,n+1):
num = list(map(int, str(i)))
if num[2] - num[1] == num[1] - num[0]:
nums.add(i)
print(len(nums)+99)
주요 포인트 및 생각해볼 점
map함수는 map(변환 함수, 순회 가능한 데이터) 이렇게 사용한다.
num = list(map(int, str(i)))
이 구문은 문자형으로 저장된 i를 iterate해서(int는 iterate할 수 없다)
map을 이용해 하나씩 int형으로 변환해서 num이라는 리스트에 넣는다는 뜻이다.
뭔가 쓸데없이 복잡해지는 것 같기도한데.. 숫자는 숫자로 처리하는게 좋은 것 같다.
답을 안 보고 문법만 참고해서 끝까지 풀 수 있게 됐다!