누군가에겐 기초일 수 있으나... 정리해보려고 한다
일단 단순 무식하게 공책에 숫자를 쭉 써놓고 3,6,9가 들어있는 숫자들의 공통점을 찾아봤다.
10으로 나눈 나머지가 3으로 나누어 떨어진다는 것과, 10으로 나눈 몫 또한 3으로 나누어 떨어진다는 것을 발견했다.
if (i % 3 == 0) or ((i // 10) % 3 == 0) or ((i % 10) % 3 == 0):
print(0,end = " ")
else:
print(i,end = " ")
이렇게 하면 3의 배수와 3,6,9를 가진 숫자가 걸러질 것이라 예상했으나, 두 가지 문제점을 찾았다
문제점 1) 10 이하의 숫자가 싹 걸러져서 전부 0이 출력
문제점 2) 20,40,50 등의 숫자가 3번째 조건에 걸러져서 0이 출력됨
문제점 1은 i가 10 이하일 때는 3의 배수만 거르도록 수정해서 해결했고,
if (i % 3 == 0) or ((i // 10) % 3 == 0) or ( ((i % 10) % 3 == 0) and (i % 10 != 0)):
print(0,end = " ")
else:
print(i,end = " ")
문제점 2는 위처럼 3번째 조건에, '10으로 나눈 나머지가 0이 아닐 때'라는 조건을 추가해서 해결했다.
n = int(input())
for i in range(1,n+1):
if i <= 10:
if (i % 3 == 0):
print(0,end=" ")
else:
print(i,end=" ")
else:
if (i % 3 == 0) or ((i // 10) % 3 == 0) or ( ((i % 10) % 3 == 0) and (i % 10 != 0)):
print(0,end = " ")
else:
print(i,end = " ")
아무튼 해결했다 하핫
n = int(input())
for i in range(1, n+1):
if i % 3 == 0:
print("0", end=" ")
elif (i % 10 == 3) or (i % 10 == 6) or (i % 10 == 9):
print("0", end=" ")
elif (i // 10 == 3) or (i // 10 == 6) or (i // 10 == 9):
print("0", end=" ")
else:
print(i, end=" ")
이건 훨씬 깔끔한 답