문제
회문(Palindrome)은 '토마토맛토마토, 다시합창합시다'와 같이 앞에서 읽으나 뒤에서 읽으나 같은 문자열을 의미합니다. 엘리스 토끼는 이런 회문을 검사하는 기계를 만들려고 합니다.
회문 검사 방식은 아래와 같습니다.
아래처럼 길이가 인 문자열이 입력으로 주어집니다.
이때, 번째 글자와 번째 글자가 같은지 다른지를 비교합니다. 계속해서 번째 글자와 번째 글자, 번째 글자와 번째 글자 순서로 비교합니다.

지시사항을 참고하여 코드를 작성하세요.
지시사항
- 사용자로부터 문자열을 입력받고 문자열의 앞에서 번째 문자와 뒤에서 번째 문자가 같은지 비교한 후 두 문자가 같다면 Same을, 다르다면 Different를 출력합니다.
입출력 예시
입력 예시 | 출력 예시 |
abcdba | Same Same Different |
Tips!
- 문자열은 알파벳 소문자로만 이루어져 있고 길이는 반드시 짝수입니다.
풀이
아이디어
- 문자열 배열을 뒤집어 확인해주면 앞뒤가 같은지 쉽게 확인할 수 있다.
a = list(input())
b = a[::-1]
for i in range(int(len(a)/2)):
if a[i] == b[i]:
print("Same")
else:
print("Different")
- 에러
처음에 문자열을 입력받아 list로 만들어주고 그 앞뒤를 바꾼 배열을 b에 저장할 생각으로 아래와 같이 작성했더니 에러가 났다.
b.reverse()
이해가 부족해 무엇이 잘못되었는지 몰랐는데 바로 밑에 있는 AI 헬피를 누르니 에러가 난 원인과 수정해야 할 부분을 정확히 알 수 있었다. AI가 교육에 도입되니 정말 편하구나.. 느꼈다. 답변도 빠르다.
a.reverse() 코드는 a 배열만 뒤집어주고 반환값이 None이기 때문에 바로 b에 뒤집어진 a list가 할당되는 것이 아니라 None이 할당된 것이다. 내가 의도한 코드를 작성하고자 한다면
b = a[::-1]
위와 같이 작성해 a의 뒤집어진 배열을 b에 바로 할당할 수 있다.
더 참고할만한 사이트:
https://www.geeksforgeeks.org/python-program-check-string-palindrome-not/,
https://www.daleseo.com/python-reversed/
b = ''.join(reversed(a))
위와 같이 reversed() 함수를 이용해 각 문자를 뒤집어주고 다시 붙여주는 방식으로도 가능하다.
출처: https://kdt.elice.io/courses/69662/lectures/584526/lecturepages/6708524
'Algorithms > 코테 문풀' 카테고리의 다른 글
[백준 2475번] 검증수 (0) | 2023.08.12 |
---|---|
백준[10250번] ACM 호텔 (0) | 2023.08.12 |
[Greedy] 엘리스 - 구슬 꾸러미(py) (0) | 2023.07.18 |
[프로그래머스] 바탕화면 정리 - JS (0) | 2023.06.24 |
[프로그래머스] 1로 만들기 - JS/ for문과 forEach문의 차이 (0) | 2023.06.06 |