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
'코딩 문제풀이 및 연습 > Python 연습' 카테고리의 다른 글
[백준] 2869_달팽이는 올라가고 싶다 파이썬 (시간초과 VS 수학) (0) | 2021.08.08 |
---|---|
파이썬 실행시간 측정 (0) | 2021.08.07 |
[백준] 1157_단어 공부 파이썬 _ set()와 count() (0) | 2021.08.06 |
[백준] 2577_숫자의 개수 파이썬 (int를 list로 바꾸기) (0) | 2021.08.05 |
[백준] 2908_상수 파이썬 _ reverse()와 [ : : -1] slicing (0) | 2021.08.04 |