티스토리 뷰

알고리즘/백준

백준 17609 C++ 회문

4567은 소수 2021. 8. 28. 18:26

https://www.acmicpc.net/problem/17609

 

17609번: 회문

각 문자열이 회문인지, 유사 회문인지, 둘 모두 해당되지 않는지를 판단하여 회문이면 0, 유사 회문이면 1, 둘 모두 아니면 2를 순서대로 한 줄에 하나씩 출력한다.

www.acmicpc.net

해당 문자열이 회문인지 아닌지, 그리고 한 글자를 뺐을 때 회문인지 판단하는 문제입니다.

 

단순히 한글자 씩 빼서 회문인지 검사하면, string의 최대 길이가 100,000 이하 이므로 최악의 경우 100,000 * 50,000 번의 검사를 해야합니다. (한 번에 2개 문자 검사 가정)

 

그러므로 투 포인터를 응용하여 해당 문자열이 회문인 경우 계속 진행하고, 서로 다른 문자가 나온 경우, check count를 1개 올려줍니다. 기회를 한 번 더 주는 것입니다. 그리고 추가로 진행을 하며 또 다시 회문이 되지 않으면 해당 문자열은 유사 회문이 될 수 없습니다. 

 

코드는 다음과 같습니다.

 

'알고리즘 > 백준' 카테고리의 다른 글

백준 1647 도시 분할 계획 C++  (0) 2021.09.11
백준 20057 마법사 상어와 토네이도 C++  (0) 2021.09.05
백준 10266 시계 사진들 C++  (0) 2021.08.28
백준 17143 낚시왕 C++  (0) 2021.08.21
백준 8111 0과 1 C++  (0) 2021.08.03
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함