문제풀이/SW Expert Academy

[SWEA][D2] 1926. 간단한 369게임 (파이썬/Python)

얄루몬 2021. 8. 23. 22:43

<오답>

n = int(input())
for i in range(1, n+1):
    if i%3 == 0:
        print("-", end=" ")
    else:
        print(i,end=" ")

📄 처음엔 반복문만 가지고 369 게임을 만드는 줄 알았는데 36처럼 3과 6이 두개가 있는 경우엔 --를 출력해야 한다는 것을 안 보고 진행해서 틀림

 

해결 방안 모색?

리스트로 넣어줘서 369가 있는지를 확인하고 그 수에 맞게 "-"를 출력해주어야 한다.

 


n = int(input()) 
lst = [str(i) for i in range(1 , n+1)] #0

for i in lst: 
    cnt = 0
    
    if '3' in i: #1
        cnt += i.count( '3' )
    if '6' in i: #2
            cnt += i.count( '6' )
    if '9' in i :#3
        cnt += i.count( '9' )

    if cnt > 0 : #4
        print( '-' *cnt, end= ' ' )
    else : #5
        print(i, end= ' ' )

#0. n = 36일 경우 이때 n+1인 경우는 0부터 시작하지 않고 1부터 시작하기 때문이다.

['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36'] 과 같이 1부터 입력받은 n까지 리스트로 쫘악 넣어준다.

 

#1/2/3. 369가 lst안에 있을 때 count를 증가시켜준다. 

 

#4. cnt가 0보다 큰 경우는 369가 있다는 소리로 그 수만큼 -를 출력해줘야 하기때문에 곱하기를 해준다.

 

#5 cnt가 0인 경우엔 369가 있지 않다는 소리로 그냥 lst를 도는 중인 i를 그대로 출력해주면 된다.