정화 코딩

[C++] 공통 순열 (백준 1622번) 본문

PS

[C++] 공통 순열 (백준 1622번)

jungh150c 2024. 9. 8. 05:58

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

 

#include <iostream>
using namespace std;

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    string s1, s2;
    while (getline(cin, s1)) {
        getline(cin, s2);
        int cnt1[26] = {};
        int cnt2[26] = {};
        for (char c: s1) cnt1[c - 'a']++;
        for (char c: s2) cnt2[c - 'a']++;
        for (int i = 0; i < 26; i++) {
            int n = min(cnt1[i], cnt2[i]);
            while (n--) cout << char('a' + i);
        }
        cout << '\n';
    }
}

정렬 태그에 속았는데;; 결국 중요한 건 문자열에 각 알파벳이 몇 개가 있는지 뿐이다!! 그래서 알파벳 체크 배열을 만들면 된다. (AC)

추가로, cin.eof()로 확인해도 되지만 그냥 위와 같이 확인해도 된다. 그리고 빈 문자열, 즉 빈 줄이 입력으로 들어올 수 있다는 점을 주의하자. (나는 그래서 getline(cin, s1)를 사용했다.)

 

Comments