작성일 :

문제 링크

8669번 - Las

설명

전체 중 최고령이 될 수 있는 나무의 수를 구하는 문제입니다.

굵기와 종류가 주어진 n개의 나무가 있고, 같은 종류 안에서는 굵기가 클수록 오래되며 같은 굵기는 존재하지 않는다는 조건이 주어집니다.


접근법

같은 종류에서는 최댓값만 최고령 후보가 되므로, 후보 수는 곧 등장한 종류의 수입니다.

따라서, 입력마다 종류 r을 해시셋에 넣어 개수를 세고 출력합니다. 굵기 값은 무시해도 됩니다.



Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
using System;
using System.Collections.Generic;

class Program {
  static void Main() {
    var n = int.Parse(Console.ReadLine()!);
    var kinds = new HashSet<int>();
    for (int i = 0; i < n; i++) {
      var p = Console.ReadLine()!.Split();
      int r = int.Parse(p[1]);
      kinds.Add(r);
    }
    Console.WriteLine(kinds.Count);
  }
}

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int n; cin >> n;
  unordered_set<int> kinds;
  kinds.reserve(n * 2);
  for (int i = 0; i < n; i++) {
    long long g; int r;
    cin >> g >> r;
    kinds.insert(r);
  }
  cout << kinds.size() << "\n";

  return 0;
} 

Tags: 8669, BOJ, C#, C++, 구현, 백준, 알고리즘, 해시

Categories: ,