1259번: 팰린드롬수 (브론즈1)
문제
정답
내 이름은 이효리, 거꾸로 해도 이효리 '팰린드롬' 문제!
입력값(n)을 왼쪽/오른쪽부터 차례대로 비교하면서 같으면 yes를 출력 아니면 no를 출력하는 형태
내 풀이 방식은 보통 사람들의 방식보다 지저분하고 복잡하지만.. 정답으로 인정되었으니 기뻐서 공유해본다 ㅎㅎ
1. n[::-1]가 익숙치 않아서 활용하지 못했다.
2. 입력을 한꺼번에 다 받고, 한꺼번에 출력해야하는 문제로 이해해서 list에 append 하는 형태로 한꺼번에 출력했다.
사실 완벽히 이해 못했다. 입력은 여러 개의 테스트 케이스로 이루어져 있다고 해서 한꺼번에 입력을 받고 출력을 저장해놨다가 마지막에 한꺼번에 출력하는 것이 아닌지.. 둘다 맞는 형태로 인정은 되긴했다.
내 풀이방식이 코드 길이는 2배로 길지만, 시간은 4ms 짧다고 한다.
# 내 풀이방식
yesno = []
while True:
n = str(input())
if (n == '0'):
break
answer = []
for i in range(len(n)): #n의 개수만큼 왼쪽, 오른쪽을 비교
if n[0+i] == n[-1-i]:
answer.append('yes')
if len(answer) == len(n): #n의 개수만큼 yes가 있다면 팰린드롬 인정 yes
yesno.append('yes')
else:
yesno.append('no')
print('\n'.join(yesno))
# 보통 사람들의 정답
while True:
n = input()
if (n =='0'):
break
if n == n[::-1]:
answer = 'yes'
else:
answer = 'no'
print(answer)
공부한 내용
1. 리스트 거꾸로 확인하기 [n::-1]
2. 문자열 인덱싱. str은 기본적으로 list처럼 인덱싱 가능
input을 굳이 str를 지정하지 않아도 디폴트가 str이다. str는 인덱싱이 가능하기 때문에 list처럼 [] 사용한다.
a = "Life is too short, You need Python"
a[0] = 'L'
3. join 이용해서 원하는 형태로 프린트하기
yesno
=> 'yes', 'no', 'yes'
print('\n'.join(yesno))
=> yes
no
yes
레퍼런스
- 다른 정답 풀이
먼저 n을 input 하고, while num != '0'문 돌리기. 마지막에 다시 n을 input() 하는 형태
- 정답 깃허브
'Algorithm > 구현' 카테고리의 다른 글
[Python3] 백준 1292번 쉽게 푸는 문제 (0) | 2023.01.05 |
---|---|
[Python3] 백준 1268번 임시 반장 정하기 (0) | 2023.01.05 |
[Python3] 백준 1236번 성 지키기 (1) | 2023.01.03 |
[Python3] 백준 1193번 분수찾기 (0) | 2023.01.03 |
[Python3] 백준 1157번 단어 공부 (0) | 2022.12.29 |
댓글