tteokbokki-master 2023. 11. 1. 23:52

누군가에겐 기초일 수 있으나... 정리해보려고 한다

 

 

일단 단순 무식하게 공책에 숫자를 쭉 써놓고 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=" ")

이건 훨씬 깔끔한 답