너무 어렵다.
그래서 다른 사람 블로그에서 2차원 배열을 이용한 방법을 참고하였다.
그런데 어찌 요런 생각을 해냈는지 정말 모를 일이다... ㅠ_ㅠ!
// 참고사이트 : https://www.mstst33.com/programmers-the_longest_palindrome/201/
이차원 boolean 배열을 이용하여 팰린드롬인지 아닌지 체크를 해준다.
1. 길이가 1인 모든 문자열은 팰린드롬이니 [0][0], [1][1] ... 은 모두 true로 설정해준다.
2. 길이가 2인 모든 문자열은 첫번째 글자와 두번째 글짜가 같으면 팰린드롬이니 간단하게 체크해줄 수 있다.
3. 길이가 3이상인 문자열은 str의 길이까지 조사해나가며 체크해준다.
총 길이를 저장하는 len 변수보다 큰 수에서 팰린드롬을 발견하면 len에 저장한다.
이차원 배열이 필요한 이유는 DP로 문제를 풀어야 하기 때문이다 (주륵)
abcdcba 라는 입력값이 있을 때, 이 문자열 전체가 팰린드롬임을 알기 위해서
1개의 문자열부터 6개의 문자열까지 팰린드롬인 부분을 저장을 해놔야 한다. -> 그것이 바로 DP
따라서 cdc가 팰린드롬임을 알기 위해서는 2번째 문자 c와 4번째 문자 c가 같다는 조건을 만족시키고, 그 안의 3번째 문자 d가 팰린드롬 조건에 만족되는지 확인해야 한다. 이 사실은 이미 포문을 돌면서 이차원 배열에 저장해두었다.
예컨대, 이미 3번째 문자 d가 팰린드롬이라는 것을 9번째 줄에서 이미 저장을 해두어 알 수 있다.
그렇기 때문에 양끝의 문자가 같아도 그 안에 싸인 문자열이 팰린드롬이 아니라면 23번째의 if 문에서 걸러질 수가 있따!
너무 주저리 써놨지만 모두가 이해하길 바라는 마음이다. 안뇽
'개발 공부' 카테고리의 다른 글
IT 신기술 동향 01 (0) | 2019.06.26 |
---|---|
시스템 관리 보안 용어 (0) | 2019.06.26 |
[boj] 1213 팰린드롬 만들기 (0) | 2019.06.24 |
[BOJ] 1541 잃어버린 괄호 (0) | 2019.06.08 |
[Programmers] '피보나치 수'를 푸는 세 가지 방법 (0) | 2019.06.08 |