본문 바로가기

Algorithm/자료구조

(C++) - 백준(BOJ) 1380 : 귀걸이

반응형

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

 

1380번: 귀걸이

입력은 번호를 가진 시나리오들로 구성됩니다. 시나리오 번호는 1부터 순서대로 증가하고, 각 시나리오는 아래의 내용을 포함합니다. 한 줄에 귀걸이를 압수당한 여학생의 수, n (1 ≤ n ≤ 100)이

www.acmicpc.net

자료구조 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

t를 선언 후 for loop를 수행하며 n이 0일 때까지 입력받습니다. 이후 이름 list를 저장할 vector name을 선언, 서순의 오류가 없도록 unordered_map m, string s를 선언해줍니다.

📔 풀이과정

귀걸이가 어처피 쌍으로 주어지므로 A, B여부는 중요하지 않습니다. m에 학생이름의 번호를 key, value를 2(귀걸이의 개수)로 저장해줍니다. 이 후 하나씩 제거해줍니다.

📔 정답출력

귀걸이를 돌려받지 않았다면 남은 귀걸이가 존재할 것입니다. m의 모든 원소를 살펴 존재한다면 형식에 맞게 출력해줍니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;

int main(){
    for(int t = 1; ;t++){
        int n;
        cin >> n;
        if(!n) break;

        vector <string> name;
        unordered_map <int,int> m;
        string s;

        cin.ignore();

        for(int i = 1; i <= n; i++) {
            getline(cin,s);
            m[i] = 2;
            name.push_back(s);
        }
        for(int i = 0; i < 2 * n - 1; i++){
            int a; char c;
            cin >> a >> c;
            m[a]--;
        }
        for(auto el : m){
            if(el.second) cout << t << ' ' << name[el.first-1] << '\n';
        }
    }
}