본문 바로가기

algorithm

백준 1620번 나는야 포켓몬 마스터 이다솜

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

 

C++

 

아이디어:

1. map은 value로 key를 찾는 함수가 없어 직접 for문을 만들어야하기 때문에 시간 초과를 유발한다.

따라서 map<int, string>과 map<string, int>로 2개의 map을 만들고 find 함수를 사용한다.

2.출력은 입력 들어오는대로 했다.

3. 전역변수로 선언해서 메모리의 스택 영역이 아닌 힙 영역을 사용했다. 

 

// 1620

#include <iostream>
#include <map>
#include <string>

using namespace std;

map<int, string> db;
map<string, int> db2;

int main() {

	ios::sync_with_stdio(false);
	cin.tie(0);

	int n, m, k;
	string value;

	cin >> n >> m;

	for (int i = 0; i < n; i++) {
		cin >> value;
		
		db.insert({i + 1, value});
		db2.insert({value, i + 1});
	}

	cin.ignore();

	for (int i = 0; i < m; i++) {
		cin >> value;

		if (isdigit(value[0]) != false) {
			k = stoi(value);
			cout << db.find(k)->second << "\n";
		}
		else {
			cout << db2.find(value)->second << "\n";
		}
	}

	return 0;
}

'algorithm' 카테고리의 다른 글

백준 1934번 최소공배수  (1) 2024.10.20
백준 11478번 서로 다른 부분 문자열의 개수  (0) 2024.10.20
백준 1269번 대칭 차집합  (2) 2024.10.13
백준 1764번 듣보잡  (3) 2024.10.13
백준 10816번 숫자 카드 2  (1) 2024.10.13