하루하루 꾸준히, 인생은 되는대로

알고리즘

백준 팰린드롬 8892 C++

긤효중 2022. 3. 21. 19:52

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

 

8892번: 팰린드롬

팰린드롬은 어느 방향으로 읽어도 항상 같은 방법으로 읽을 수 있는 단어이다. 예를 들어, civic, radar, rotor, madam은 팰린드롬이다. 상근이는 단어 k개 적혀있는 공책을 발견했다. 공책의 단어는 ICPC

www.acmicpc.net


문제

팰린드롬은 어느 방향으로 읽어도 항상 같은 방법으로 읽을 수 있는 단어이다. 예를 들어, civic, radar, rotor, madam은 팰린드롬이다.

상근이는 단어 k개 적혀있는 공책을 발견했다. 공책의 단어는 ICPC 문제가 저장되어 있는 서버에 접속할 수 있는 비밀번호에 대한 힌트이다. 비밀번호는 k개의 단어 중에서 두 단어를 합쳐야 되고, 팰린드롬이어야 한다. 예를 들어, 단어가 aaba, ba, ababa, bbaa, baaba일 때, ababa와 ba를 합치면 팰린드롬 abababa를 찾을 수 있다.

단어 k개 주어졌을 때, 팰린드롬을 찾는 프로그램을 작성하시오.


입력

첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 공책에 적혀져있는 단어의 수 k(1 ≤ k ≤ 100)가 주어진다. 다음 k개 줄에는 a부터 z까지 알파벳으로 이루어진 단어가 한 줄에 하나씩 주어진다. 모든 단어 길이의 합은 10,000보다 작거나 같다.


출력

각 테스트 케이스마다 팰린드롬을 출력한다. 만약, 가능한 팰린드롬이 여러 가지라면 아무거나 출력한다. 팰린드롬을 만들 수 없는 경우에는 0을 출력한다.


해결방안 ->단어의 개수가 최대 100개여서 문자열 배열에 입력받은 단어를 넣고 2중 루프를 돌면서 단어2개를 더하고 단어2개 더한 문자열이 팰린드롬인지 확인해준다


reverse함수 -> algorhtim 해더파일에 포함되어 있으며 문자열을 뒤집어 주는 함수이다.

reverse(시작반복자,종료반복자)를 갖는다.


전체 소스 코드->

#include <iostream>
#include <string>
#include <algorithm> //reverse함수

 

//백준 8892 팰린드롬

 

//string reverse(string.begin(),string.end()) ->문자열을 뒤집어주는 함수(algorithm 헤더 추가)
 
using namespace std;
 
int main(void){
    int t;
    cin >> t;
    while(t--){
 
        string arr[100];
        int n;
        cin >> n;
 
 
        for(int i = 0;i<n;i++){
            cin >> arr[i];
        }
 
        int count = 0;
        for(int i = 0;i<n;i++){
            for(int j = 0;j<n;j++){
                if(i != j){
                string sum = arr[i] + arr[j];
                string compare = sum;
                reverse(sum.begin(),sum.end());
                if(sum == compare){
                    count++;
                    cout << sum << '\n';
                    break;
                }
                }
                else if(i == j){
                    continue;
                }
            }
            if(count != 0){
                break;
            }
        }
        if(count == 0){
            cout << '0' << '\n';
        }
 
}
 
}

'알고리즘' 카테고리의 다른 글

백준 21921 블로그 C++  (0) 2022.03.22
슬라이딩 윈도우 알고리즘  (0) 2022.03.22
백준 주유소 C언어  (0) 2022.03.20
백준 1946 신입사원 C언어  (0) 2022.02.28
백준 6550 C언어  (0) 2022.02.26