[Python]알고리즘/코드업

[기초-종합] ▲ 6082 - 3 6 9 게임의 왕이 되자

HSY_mumu 2022. 3. 16. 17:47
728x90

6082 - 3 6 9 게임의 왕이 되자

(풀이 1) 입력이 30보다 작은 정수로 제한된 경우

n = int(input())

for i in range(1, n+1):
     #일의 자리가 3, 6, 9 이면
    if((i%10) == 3 or (i%10) == 6 or (i%10) == 9):
        print("X", end=" ")
    else:
        print(i, end=" ")

일의 자리만 검사한 이유는?

해당 문제는 입력이 30보다 작은 정수 1개가 입력된다고 가정했기 때문에

십의 자리가 3, 6, 9인지는 따로 검사할 필요가 없다!

 

 

(풀이 2) 입력이 제한되지 않은 경우

n = int(input())

for i in range(n+1):
    num = str(i)        #문자열로 변환
    length = len(num)   #자리수 계산

    for j in range(length):
        if(int(num[j]) != 0 and int(num[j]) % 3 == 0 ):
            print("X", end="")
        else:
            print(num[j], end="")
    print(" ")
  • len(문자열): 문자열의 길이를 반환

1) 숫자의 자리수를 계산한다(문자열 길이로 구하면 쉽게 구할 수 있음)

2) 자리수만큼 반복하여 해당 수의 숫자가 3, 6, 9인지 판별한다

- 문자열로 변환해 놓았기 때문에 if문 안에서 % 연산자 사용하기 위해서는 int형으로 변환이 필요함

728x90