본문 바로가기

백준

8892 팰린드롬

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <functional>
#include <string>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <cmath>
#include <cstring>
#include <bitset>

#define xx first
#define yy second
#define all(x) (x).begin(), (x).end()
#define MOD 1000000009

using namespace std;
using i64 = long long int;
using ii = pair<int, int>;
using ii64 = pair<i64, i64>;
using iii = tuple<int, int, int>;

bool    check(string s)
{
    for (int i = 0; i < s.size() / 2; i++)
    {
        if (s[i] != s[s.size() - i - 1])
            return false;
    }
    return true;
}

void    solve()
{
    int n;
    scanf("%d", &n);

    vector<string> v(n);
    for (int i = 0; i < v.size(); i++)
        cin >> v[i];

    for (int i = 0; i < n - 1; i++)
    {
        for (int j = i + 1; j < n; j++)
        {
            string s1, s2;
            s1 = v[i] + v[j];
            s2 = v[j] + v[i];
            if (check(s1))
            {
                cout << s1 << endl;
                return;
            }
            if (check(s2))
            {
                cout << s2 << endl;
                return;
            }
        }
    }
    cout << "0" << endl;
}

int     main()
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);

    int t;
    scanf("%d", &t);

    for (int i = 0; i < t; i++)
        solve();

    return 0;
}

처음에 코드 저렇게 작성하고 뭐가 문제인지 싶었다.

로직도 잘 돌아가고 예제도 잘 돌아가는데???

 

알고보니 cin.tie(NULL); 문제였음

ㅋㅋㅋㅋ 아니 컴파일 에러라도 띄워주던가!

 

cin.tie(nULL)을 쓰면 scanf와 endl을 사용하지 못합니다

알아두기

 

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <functional>
#include <string>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <cmath>
#include <cstring>
#include <bitset>

#define xx first
#define yy second
#define all(x) (x).begin(), (x).end()
#define MOD 1000000009

using namespace std;
using i64 = long long int;
using ii = pair<int, int>;
using ii64 = pair<i64, i64>;
using iii = tuple<int, int, int>;

bool    check(string s)
{
    for (int i = 0; i < s.size() / 2; i++)
    {
        if (s[i] != s[s.size() - i - 1])
            return false;
    }
    return true;
}

void    solve()
{
    int n;
    cin >> n;

    vector<string> v(n);
    for (int i = 0; i < v.size(); i++)
        cin >> v[i];

    for (int i = 0; i < n - 1; i++)
    {
        for (int j = i + 1; j < n; j++)
        {
            string s1, s2;
            s1 = v[i] + v[j];
            s2 = v[j] + v[i];
            if (check(s1))
            {
                cout << s1 << "\n";
                return;
            }
            if (check(s2))
            {
                cout << s2 << "\n";
                return;
            }
        }
    }
    cout << "0\n";
}

int     main()
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);

    int t;
    cin >> t;

    for (int i = 0; i < t; i++)
        solve();

    return 0;
}

 

'백준' 카테고리의 다른 글

13116 30번  (0) 2020.10.13
2331 반복수열  (0) 2020.10.13
2947 나무 조각  (0) 2020.10.12
2565 전깃줄  (0) 2020.10.11
15988 1, 2, 3 더하기 3  (0) 2020.10.11