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게임에 쓴다면 위와 같은 결과가 나오니 이 문제에는 맞지 않고 이러한 내장함수를 알게되었다는 것에 의의를 두자!