정답
n = int(input())
nlist = list(range(1,n+1))
for i in range(0,n):
count = 0
s = str(nlist[i])
for j in range(len(s)):
if ('3' in s[j]) or ('6' in s[j]) or ('9' in s[j]):
count += 1
num = '-' * count
elif ('3' not in s) and ('6' not in s) and ('9' not in s):
num = s
print(num, end = ' ')
파이썬에서 아직 문자열 나누는 방법 등에 대해 익숙하지 않아서 좀 헤맸다.
그리고 처음엔 순간 369게임이 아니라 3의 배수 찾는걸로 착각해서 또 헤맸다..
처음 시도해본건 숫자가 33일때, 33을 각 자리수로 나눈 다음에 그 자리수에 3,6,9가 있으면 count를 하나 올리고, 나중에 그 count 수만큼 '-'를 출력하는 방법
10**j
로 나눴을 때 나머지로 구해서 오류 발생-> 방향을 틀어서 숫자 리스트들을 문자열로 변환하기로.
-> 다만, 30처럼 앞에서 먼저 369가 나오는 경우, '3'에서는 카운트가 1올라갔다가, '0'에서는 문자열 그대로 출력해서 오류 발생
-> elif 분기로 s 문자열 안에 369가 하나도 없으면 문자열 그대로 출력하게 변경
-> 정상작동! 해결!