[백준] 32386 - KCPC에 등장할 알고리즘 맞히기
[백준] 32386 - KCPC에 등장할 알고리즘 맞히기

[백준] 32386 - KCPC에 등장할 알고리즘 맞히기

언어
Python
C++
난이도
Sliver 4
다시 풀어보기
다시 풀어보기
알고리즘 유형
구현
집합
작성자
박용성박용성
생성 일시
2024년 10월 28일

🖥 시작하며

dict 를 이용하면 쉽게 풀린다.

⚙️ 코드

if __name__ == "__main__": import sys input = sys.stdin.readline N = int(input()) tag_count = {} for _ in range(N): data = input().split() t = int(data[1]) tags = data[2:] # 빈도 기록 for tag in tags: # 만약 tag가 이미 존재하면 +1 if tag in tag_count: tag_count[tag] += 1 # 없다면 생성 else: tag_count[tag] = 1 # 가장 많이 등장한 태그의 빈도 찾기 max_freq = max(tag_count.values()) # 가장 많이 등장한 태그가 여러 개 있는지 확인 result = [tag for tag, count in tag_count.items() if count == max_freq] # 여러개면 하나 -1 아니면 출력 print(-1) if len(result) > 1 else print(result[0])
#include <algorithm> #include <iostream> #include <string> #include <unordered_map> #include <vector> using namespace std; typedef long long ll; typedef vector<int> vi; typedef vector<string> vs; typedef pair<int, int> pii; typedef pair<string, int> psi; typedef unordered_map<string, int> mapsi; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int N; cin >> N; mapsi tag_count; for (int i = 0; i < N; i++) { int id, t; cin >> id >> t; string tag; for (int j = 0; j < t; j++) { cin >> tag; tag_count[tag]++; } } // 최대 빈도 찾기 int max_freq = 0; for (const auto &p : tag_count) { max_freq = max(max_freq, p.second); } // 최대 빈도를 가진 태그들 찾기 vs result; for (const auto &p : tag_count) { if (p.second == max_freq) { result.push_back(p.first); } } // 결과 출력 if (result.size() > 1) { cout << -1 << "\n"; } else { cout << result[0] << "\n"; } return 0; }

📌 소감

댓글

guest