SERIES · AtCoder Weekday Contest

Atcoder Weekday Contest 073

Atcoder Weekday Contest 073 풀이

5/21/2026 · 2 min read


Atcoder Weekday Contest 073 풀이

오늘도 어김없이...

A - Lottery Number Matching

data_structure

map이나 set을 쓰면 쉽다

int res;
auto mint = [](){
    int n,m; cin >> n >> m;
    map<int, int> M;
    for(int i = 0; i < n; i++){
        int x; cin >> x; M[x]++;
    }
    for(int i = 0; i < m; i++){
        int x; cin >> x; res += (M.count(x));
    }
    cout << res << "\n";
};
Time

B - Flipping Cards

bruteforce

브루트포스로 nCknCk를 구해주면 된다

int n,k,mx;
 
auto mint = [](){
    cin >> n >> k;
    vector<array<int, 2>> w(n);
    for(int i = 0; i < n; i++) cin >> w[i][0] >> w[i][1];
    vector<int> v;
    for(int i = 0; i < n; i++) v.pb(i < k ? 0 : 1);
    do{
        int s = 0;
        for(int i = 0; i < n; i++) s += (v[i] ? w[i][0] : w[i][1]);
        mx = max<int>(mx, s);
    }while(next_permutation(all(v)));
    cout << mx << "\n";
};
TimeSpace

D - Package Delivery

floyd

정점의 개수인 MMM200M \leq 200이다 플로이드를 돌리면 된다

int q,n,m,res;
constexpr int inf = 1LL << 50;
 
auto mint = [](){
    cin >> q >> n >> m;
    vector<vector<int>> dist(n + 1, vector<int>(n + 1, inf));
    for(int i = 0; i < m; i++){
        int a,b,c; cin >> a >> b >> c;
        dist[a][b] = dist[b][a] = c;
    }
    for(int i = 1; i <=n; i++) dist[i][i] = 0;
    for(int k = 1; k <=n; k++) for(int i = 1; i <= n; i++) for(int j = 1; j <= n; j++){
            dist[i][j] = min<int>(dist[i][j], dist[i][k] + dist[k][j]);
    }
    while(q--){
        int a,b; cin >> a >> b;
        res += dist[a][b];
    }
    cout << res << "\n";
};
TimeSpace

총평

이 사람 C,EC, E번은 안풀었나요? CC번은 걍 귀찮아서 넘겼고요, EE번은 유명한?문제인 것 같아서 내일 별도로 포스팅 올릴 예정입니다.

Tags:Atcoder
SERIES12 / 15회차

AtCoder Weekday Contest

  1. 10.Atcoder Weekday Contest 071
  2. 11.Atcoder Weekday Contest 072
  3. 12.Atcoder Weekday Contest 073지금 읽는 중
  4. 13.Atcoder Weekday Contest 074
  5. 14.Atcoder Weekday Contest 075

관련 글