[백준] 회문

유승선 ·2022년 6월 11일
0

백준

목록 보기
17/64

타임어택 같은 느낌으로 시간을 재서 풀어본 문제이다. 코딩 문제를 풀면 풀 수록 느끼는 점 중 하나가 내 생각을 노트에 그림을 그리거나 적으면 적을수록 그 아이디어가 점점 뚜렷해지는 기분이다. 물론 입대하기 전까지는 아이패드로 이런 과정을 거치고 그랬지만 혈육한테 물려줘가지고 아쉽게도 수기로 전부 그리는중이다. 그래도 이것도 이것만의 매력이 있는거같다.

그렇게 어려운 문제는 아니였고 실제로 빨리 풀어보기도 했던 문제이기때문에 설명을 빠르게 하겠다. 정답비율이 저렇게 낮은것도 신기했고 문제 난이도 자체도 골드5라서 놀라긴했다 (내 실력이 좋아진걸까)

전형적인 Palindrome 찾기 문제인데 Pseudo Palindrome 이라는 정의가 추가되었다. 만약 문자열중 문자 하나를 제거했을때 나머지 문자가 팰린드롬을을 이룰수있다면 1을, 모든 방법을 동원해도 불가능 할 경우에는 일반 문자열이란 뜻으로 2를 반환하면 된다. 그리고 0은 완벽한 팰린드롬을 뜻한다.

딱 봐도 이해하기 꽤 편하다. 먼저 투포인터를 이용해서 두 문자를 비교하며 서로 같은건지 비교해본다. 그러고 두 문자가 같지 않다면 checkPal 함수를 불러서 left를 제거했을때 상황인 left+1 그리고 right를 제거했을때 상황인 right-1 을 불러가지고 한 문자열을 제거했을때 나오는 bool 값을 가지고 온다. 만약 두 시나리오 전부 통과가 되면은 유사회문이고 둘 중 하나라도 성공해도 유사회문이니 1을 리턴하면된다. 그 외에 상황은 일반 문자열이니 2를 리턴해주고 저 테스트케이스에도 해당이 안되면 완벽한 팰린드롬으로서 0을 리턴해주면된다.

나는 어이없게도 a 와 b 시나리오 둘 다 통과되는 상황을 고려안한체 둘중 하나만 통과되는 XOR 기호를 써가지고 98프로에 성공률에서 막혀서 고전을 했다.

배운점:
1. 너무 안일하게만 생각하지말자
2. 틀렸다하면 작은것들에서 뭐가 틀렸는지를 보자

profile
성장하는 사람

0개의 댓글