swea 1923. 간단한 369게임

jiyoung1220·2021년 7월 24일
0

swea

목록 보기
1/2

정답

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 로 나눴을 때 나머지로 구해서 오류 발생
    - 999일땐, 9, 99, 999로 나뉘므로

-> 방향을 틀어서 숫자 리스트들을 문자열로 변환하기로.

  • 문자열의 각 인덱스마다 3이나 6이나 9가 있으면 카운트를 올리고, 그 카운트 개수만큼 '-'를 출력, 369가 없다면 해당 문자열을 그대로 출력

-> 다만, 30처럼 앞에서 먼저 369가 나오는 경우, '3'에서는 카운트가 1올라갔다가, '0'에서는 문자열 그대로 출력해서 오류 발생

-> elif 분기로 s 문자열 안에 369가 하나도 없으면 문자열 그대로 출력하게 변경

-> 정상작동! 해결!

profile
갓 개발공부를 시작하여 열심히 기초를 다지는 중입니다.

0개의 댓글