본문 바로가기
컴퓨터공학부

코딩 테스트 입문 ⑩ 집합, 딕셔너리

by hey-min-eee 2024. 11. 8.

1. 집합

3052 5704
import sys
import math
input = sys.stdin.readline

l = []
for i in range(10) :
    a = int(input())
    if a%42 not in l :
        l.append(a%42)

print(len(l))
import sys
import math
input = sys.stdin.readline
while 1:
    a = input().rstrip()
    if a == '*' :
        break
    l = [0] * 26
    for x in a :
        if x == ' ':
            continue
        k = ord(x) - 97
        l[k] += 1
    cnt = 0
    for i in range(26) :
        if l[i] > 0 :
            cnt += 1
    if cnt >= 26 :
        print('Y')
    else :
        print('N')
**10867 **1181
import sys
import math
input = sys.stdin.readline

n = int(input())
a = set(map(int, input().split()))

s=list(a)
s.sort()
print(*s)
import sys
import math
input = sys.stdin.readline

n = int(input())
l = set()
for i in range(n) :
    a = input().rstrip() 
    l.add((len(a),a))  # 셋에 저장 방법, 튜플로 저장해야 함

a = list(l)
a.sort()
for x, y in a :
    print(y)
**10815 **1764
import sys
import math
input = sys.stdin.readline

n1 = int(input())
l1 = set(map(int, input().split()))
# 시간에 민감한 문제를 풀 때는 기준값을 set으로 저장

n2 = int(input())
l2 = list(map(int, input().split()))

for x in l2 :
    if x in l1 :
        print(1,end=" ")
    else :
        print(0, end=" ")
import sys
import math
input = sys.stdin.readline

n1, n2 = map(int, input().split())
l1 = set()
l2 = set()

for i in range(n1) :
    a = input().rstrip()
    l1.add(a)
for i in range(n2) :
    a = input().rstrip()
    l2.add(a)
l3 = []
for x in l1 :
    if x in l2 :
       l3.append(x)
l3.sort()

print(len(l3))
for x in l3 :
    print(x)
14425  
import sys
import math
input = sys.stdin.readline

n1, n2 = map(int, input().split())
l1, l2 = set(), set()
for i in range(n1) :
    a = input().rstrip()
    l1.add(a)
for i in range(n2) :
    a = input().rstrip()
    l2.add(a)
l3 = []
if n1 > n2 :
    for x in l1 :
        if x in l2 :
           l3.append(x)
else :
    for x in l2 :
        if x in l1 :
            l3.append(x)

print(len(l3))
 

2. 딕셔너리

**11652 **1302
// 전체 다 못품
import sys
import collections
input = sys.stdin.readline

n = int(input())
d = collections.defaultdict(int)

for i in range(n) :
    x = int(input())
    d[x] += 1
m = max(d.values())
k = list(d.keys())
k.sort()

for x in k :
    d[x] == m :
        print(x)
        break # 빨리 끝내기
// 전체 다 못품
import sys
import collections
import collections

input = sys.stdin.readline

n = int(input())
d = collections.defaultdict(int)

for i in range(n) :
    x = input().rstrip()
    d[x] += 1

m = max(d.values())
k = list(d.keys())
k.sort()

for x in k :
    if d[x] == m :
        print(x)
        break
**10816  
import sys
import collections
import collections

input = sys.stdin.readline

n = int(input())
d = collections.defaultdict(int)
a = list(map(int, input().split()))

for x in a :
    d[x] += 1
    
m = int(input())
b = list(map(int, input().split()))

res = []
for x in b :
    res.append(d[x])
print(*res)
 

3. C++ 풀이

1181 10867
#include <iostream>
#include <set>
#include <string>

using namespace std;

int n;
set<pair<int, string>> a;

int main() {
    ios_base::sync_with_studio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    cin >> n;
    int len;
    string n;
    for(int i = 0;i<n;i++){
        cin >>s;
        len = s.size();
        a.insert({len, s});
    }
    for(auto p : a) {
    cout << p.second << '\n';
    }
}
#include <iostream>
#include <string>
#include <set>

using namespace std;

int n;
set> a;


int main() {
    ios_base::sync_with_studio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    cin >> n;
    for(int i=0;i<n;i++){
        cin >> x;
        a.insert(x);
    }
    for (auto p :a) P
        cout >> p >> ' ' ;

}
1302 10816
#include <iostream>
#include <set>
#include <string>

using namespace std;

int n;
map<string, int> d;

int main() {
    ios_base::sync_with_studio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    cin >> n;
    string s;
    for(int i = 0;i<n;i++){
        cin >> s;
        if((d.find(s) == d.end()){
            d.insert({s, 1});
        else :
            d[s] += 1;
    int m = 0;
    for(auto x :d){
        m = max(m, x.second);
    }
    for(auto x : d) {
        if(x.second ==m){
            cout << x.first;
            break
}    
#include <iostream>
#include <set>
#include <string>

using namespace std;

int n, m;
int num;
map<int, int> d;

int main() {
    ios_base::sync_with_studio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    cin >> n;
    for(int i=0;i<n;i++){
        cin >>num;
        if(d.find(num) == d.end()){
            d.insert({num, 1});
        else :
            d[s] += 1;
         }
    }
    cin >> m;
    vector<int> result;
    for(int i=0;i<m;i++){
        cin >>num;
        result.push_back(d[num]);
    }
    for(auto r : result){
        cout << r << ' ';
    }
}