[SWEA] - 1926. 간단한 369게임

jjiani·2021년 2월 12일
0

SWEA

목록 보기
5/20
post-thumbnail

swea - 문제링크

N = int(input())

for i in range(1, N+1):
	# 3, 6, 9 숫자가 나온 횟수를 카운팅 하기위한 초기값설정
    count = 0
    # 문자열로 변환한 숫자를 순회하면서
    for j in str(i):
    	# 3, 6, 9가 있는지 체크하여 카운트에 저장
        if j == '3' or j == '6' or j == '9':
            count += 1
    # 카운트가 1 이상이라면
    if count > 0:
    	# 숫자 i 대신 '-'를 카운트에 저장된 횟수만큼 곱해서 출력
        i = '-' * count
    # 프린트를 한줄로 해주기위해 end로 줄바꿈대신 ' ' 한칸 띄워줌!
    print(i, end=' ')

🔑 처음에는 무식하게 조건문 하나하나 다 만들어야 하나 고민했다. 그렇게 적당한 선에서 조건문을 여러개 만들고 돌렸는데 33같은 같은숫자가 두번나오는 경우를 생각을 못해서 오래 고민하고 아예 처음부터 다시 짰다.😭😭
간단해 보였지만 생각해내는데 오래걸렸다,,,
최대한 내장함수를 쓰지 않고자 했기에 위와같은 방식으로 코딩했다.
그렇다고 딱히 알고있는 내장함수가 많은 것도 아님 ^^;;

아니면 아래와 같이 리스트를 하나 만들어도 되겠다.

N = int(input())
# 숫자가 있는지 확인할 리스트
game = ['3', '6', '9']

for i in range(1, N+1):
    count = 0
    for j in str(i):
        if j in game:
            count += 1
    if count > 0:
        i = '-' * count
    print(i, end=' ')

💡 문자를 치환해주는 내장함수는 뭐가있을까 해서 찾아보니

N = int(input())

for i in range(1, N+1):
    I = str(i)
    translated_I = I.translate(str.maketrans('369', '짝짝짝'))
    print(translated_I, end=' ')
    
# 20까지 해봤을 때 결과
# 1 2 짝 4 5 짝 7 8 짝 10 11 12 1짝 14 15 1짝 17 18 1짝 20 

📢maketrans(in, out) 메서드는 두 개의 매개 변수를 받아 in에 들어갈 것은 찾아서 바꿀 문자, out에 들어갈 것은 바꾸고 싶은 문자!
근데 이 방법을 369게임에 쓴다면 위와 같은 결과가 나오니 이 문제에는 맞지 않고 이러한 내장함수를 알게되었다는 것에 의의를 두자!

profile
¡Bienvenido a mi velog!🐣

0개의 댓글