728x90
반응형
문제 상황
121, 12421, 010, 202 와 같은 수를 팰린드롬수라고 한다.
즉, 팰린드롬수는 어떠한 수를 거꾸로 읽어도 똑같다면 팰린드롬수이다.
입력으론, 1~99999 범위의 정수가 주어지며
팰린드롬수인지를 판별해내야하는 문제이다.
솔루션
str() 함수는 정수를 문자열로 바꿔주는 함수이다.
문자열은 "배열"로 정의되어 한개의 문자마다 고유한 인덱스가 순서대로 정의된다.
이번 문제에선 주어진 수를 거꾸로 뒤집어
기존 주어진 수와 일치하는 지 비교해야 되었다.
따라서, str() 함수를 사용해 주어진 정수를 문자열로 바꿔주고,
거꾸로 문자열을 재배열했다.
그렇게 재배열된 문자열과 주어진 정수 문자열과 비교해
팰린드롬수를 판별했다.
솔루션 코드 작성
# 팰린드롬수
num = 1
while True:
# 숫자 입력
num = int(input())
# 종료 조건연산
if(num == 0):
break
num_str = str(num)
num_palin = ""
# 입력받은 수 팰린드롬수 재배열
for i in range(len(num_str)-1, -1, -1):
num_palin += num_str[i]
# 팰린드롬수 조건연산
if(num_palin == num_str):
print("yes")
else:
print("no")
마치며
문자열 자료구조를 이해하고 있으므로써 쉽게 문제를 해결할 수 있었다.
문제 상황에 대해 핵심 논리를 이해하고, 그에 부응하는 "자료구조"를 찾으니
간단하게 문제 알고리즘을 코드로 구성할 수 있었다.
요즘들어, 자료구조를 알게됨으로써 얻는 이점들을 백준 문제들을 풀면서 많이 느끼고 있는 것 같다.
앞으로도 다양한 자료구조를 많이 접하며, 자료구조를 활용해 어려운 알고리즘을 코드로 구성할 수 있는 내가 되도록 노력하겠다!
"자료구조를 이용하면, 단순한 로직으로 코드를 작성해낼 수 있다."
이 점을 명심하며, 나는 꾸준히 백준을 풀어보도록 한다.
728x90
반응형
'📚 스터디 > 알고리즘' 카테고리의 다른 글
[백준 2869번] 달팽이는 올라가고 싶다 (0) | 2023.07.15 |
---|---|
[백준 2609번] 최대공약수와 최소공배수 (0) | 2023.07.13 |
[백준 15829번] Hashing (0) | 2023.07.10 |
[백준 2798번] 블랙잭 (0) | 2023.07.09 |
[백준 2331번] 분해합 (0) | 2023.07.09 |