Notice
Recent Posts
Recent Comments
Link
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

dh-winternagi 님의 블로그

(1620) 나는야 포켓몬 마스터 이다솜 본문

백준 (C++)/Solve

(1620) 나는야 포켓몬 마스터 이다솜

dh-winternagi 2026. 4. 14. 11:50

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

단계별로 풀어보기

14단계(집합과 맵) 4번째

 

 

 

map은 레드-블랙 트리를 기반으로 구현되어 있어 key를 이용해 value를 찾기는 쉽지만 value를 이용해 key를 찾을 수는 없으며 O(n) 전체 순회가 유일한 방법이다.

PS에서 map을 쓰면서 양방향 탐색이 필요하다면 메모리를 두 배 써서 map을 2개 만드는 방식이 가장 정석이라고 할 수 있다.

 

 

 

#include <iostream>
#include <map>
using namespace std;

int main() 
{
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  
  int n, m;
  map<int, string> mp;
  map<string, int> mp2;
  
  cin >> n >> m;
  
  for(int i=1;i<=n;i++){
    string p;
    
    cin >> p;
    
    mp[i]= p;
    mp2[p]= i;
  }
  
  while(m--){
    string q;
    
    cin >> q;
    
    if(q[0]<'A'){ // 숫자or문자 체크를 아스키코드 값 비교로 대체
      cout << mp[stoi(q)] << "\n";
    }else{
      cout << mp2[q] << "\n";
    }
  }
  
  return 0;
}

'백준 (C++) > Solve' 카테고리의 다른 글

(1764) 듣보잡  (0) 2026.04.14
(10816) 숫자 카드 2  (0) 2026.04.14
(7785) 회사에 있는 사람  (0) 2026.04.14
(14425) 문자열 집합  (0) 2026.04.14
(10815) 숫자 카드  (0) 2026.04.14