1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
while True:
    flag = 1   # 숫자 하나만 들어갈 경우, yes로 처리하기 위해서 1로 초기화
    num = list(input())
    if num[0== '0':
        break
    else:
        for i in range(len(num)//2):
            if num[i] == num[len(num)-1-i]:
                flag = 1
            else:
                flag = 0
                break  # 1223 같은 수를 위해서 반드시 필요
        if flag == 1:
            print("yes")
        else:
            print("no")
 
cs

2번 시도해서 틀렸던 문제.

첫 번째 이유는 flag = 0으로 초기화했다는 점이다. flag = 1로 초기화를 해야 일의 자리 숫자를 입력했을 경우, yes로 처리 할 수 있다.

 

두 번째 이유는 for문의 if-else에서 break를 넣지 않았다는 점이다. 

코드의 주석에 나와있듯이 반례는 1223을 들 수 있다. 

break가 없으면, 1 <-> 3 에서 flag = 0이 되었다가 2 <-> 2에서 1로 덧씌워져 yes로 출력된다.

따라서, break를 통해 만약 no이면 바로 if-else문을 빠져나올 수 있도록 처리하면 된다.

 

 

문제 출처: https://www.acmicpc.net/problem/1259

 

1259번: 팰린드롬수

입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다.

www.acmicpc.net

 

+ Recent posts