본문 바로가기
728x90

10988 팰린드롬인지 확인하기

문제 🌐

알파벳 소문자로만 이루어진 단어가 주어진다. 이때, 이 단어가 팰린드롬인지 아닌지 확인하는 프로그램을 작성하시오.

팰린드롬이란 앞으로 읽을 때와 거꾸로 읽을 때 똑같은 단어를 말한다.

level, noon은 팰린드롬이고, beakjoon, online, judge는 팰린드롬이 아니다.

입력

첫째 줄에 단어가 주어진다. 단어의 길이는 1보다 크거나 같고, 100보다 작거나 같으며, 알파벳 소문자로만 이루어져 있다.

출력

첫째 줄에 팰린드롬이면 1, 아니면 0을 출력한다.

예제 입력 1

level

예제 출력 1

1

접근 방법

입력받은 숫자가 홀수인지, 짝수인지 먼저 판별해야 할까? 라고 생각했다. 하지만 글자의 길이가 홀수일 경우 가운데에 위치한 문자는 굳이 확인하지 않아도 된다.

그래서 문자의 길이를 구하고 2로 나눈 몫만큼, 앞뒤로 글자를 비교하는 반복문을 만들었다.

5//2 = 2 번 비교하고,

8//2 = 4 번 비교한다.

문자열도 배열과 같이 인덱싱할 수 있다는 점을 이용했다.

for i in range(N//2):
    if word[i] == word[-i-1]:
        continue
    else:
        print(0)
        break

0 ~ N//2 범위의 i에 대하여 반복한다.

인덱스 i의 문자와 -i-1를 비교해서 같으면 continue, 다음 반복문으로 넘어간다.

그리고 같지 않다면 0을 프린트하고 반복문을 정지한다.

이때 for-else 구문을 사용했는데, for 문에서 break문에 해당하는 조건을 만족하지 않는다면 else 문에 들어간 코드를 실행하는 것이다. 여기서는 break 되지 않는 조건이 대칭된 위치의 글자가 모두 일치한다는 것이므로 팰린드롬이라는 것을 의미하는 1을 출력한다.

Full Solution

word = input()
N = len(word)
for i in range(N//2):
    if word[i] == word[-i-1]:
        continue
    else:
        print(0)
        break
    
else: print(1)
728x90

개발자 호소인