๐Ÿ“š Algorithm/๐Ÿ‘€ C++ ๋ฌธ์ œ ํ’€์ด

C++ ๋ฐฑ์ค€ 1620 _ ๋‚˜๋Š”์•ผ ํฌ์ผ“๋ชฌ ๋งˆ์Šคํ„ฐ ์ด๋‹ค์†œ ๋ฌธ์ œ ํ’€์ด

yunakim2 2023. 2. 10. 23:45
๋ฐ˜์‘ํ˜•

[C++ - ๋ฐฑ์ค€ 1620] ๋ฌธ์ œ

 

1620๋ฒˆ: ๋‚˜๋Š”์•ผ ํฌ์ผ“๋ชฌ ๋งˆ์Šคํ„ฐ ์ด๋‹ค์†œ

์ฒซ์งธ ์ค„์—๋Š” ๋„๊ฐ์— ์ˆ˜๋ก๋˜์–ด ์žˆ๋Š” ํฌ์ผ“๋ชฌ์˜ ๊ฐœ์ˆ˜ N์ด๋ž‘ ๋‚ด๊ฐ€ ๋งž์ถฐ์•ผ ํ•˜๋Š” ๋ฌธ์ œ์˜ ๊ฐœ์ˆ˜ M์ด ์ฃผ์–ด์ ธ. N๊ณผ M์€ 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 100,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ธ๋ฐ, ์ž์—ฐ์ˆ˜๊ฐ€ ๋ญ”์ง€๋Š” ์•Œ์ง€? ๋ชจ๋ฅด๋ฉด

www.acmicpc.net

๋ฌธ์ œ ์„ค๋ช…

์ฒซ์งธ ์ค„์—๋Š” ๋„๊ฐ์— ์ˆ˜๋ก๋˜์–ด ์žˆ๋Š” ํฌ์ผ“๋ชฌ์˜ ๊ฐœ์ˆ˜ N์ด๋ž‘ ๋‚ด๊ฐ€ ๋งž์ถฐ์•ผ ํ•˜๋Š” ๋ฌธ์ œ์˜ ๊ฐœ์ˆ˜ M์ด ์ฃผ์–ด์ ธ. N๊ณผ M์€ 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 100,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ธ๋ฐ, ์ž์—ฐ์ˆ˜๊ฐ€ ๋ญ”์ง€๋Š” ์•Œ์ง€? ๋ชจ๋ฅด๋ฉด ๋ฌผ์–ด๋ด๋„ ๊ดœ์ฐฎ์•„. ๋‚˜๋Š” ์–ธ์ œ๋“ ์ง€ ์งˆ๋ฌธ์— ๋‹ตํ•ด์ค„ ์ค€๋น„๊ฐ€ ๋˜์–ด์žˆ์–ด.

๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ํฌ์ผ“๋ชฌ์˜ ๋ฒˆํ˜ธ๊ฐ€ 1๋ฒˆ์ธ ํฌ์ผ“๋ชฌ๋ถ€ํ„ฐ N๋ฒˆ์— ํ•ด๋‹นํ•˜๋Š” ํฌ์ผ“๋ชฌ๊นŒ์ง€ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ž…๋ ฅ์œผ๋กœ ๋“ค์–ด์™€. ํฌ์ผ“๋ชฌ์˜ ์ด๋ฆ„์€ ๋ชจ๋‘ ์˜์–ด๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ์žˆ๊ณ , ๋˜, ์Œ... ์ฒซ ๊ธ€์ž๋งŒ ๋Œ€๋ฌธ์ž์ด๊ณ , ๋‚˜๋จธ์ง€ ๋ฌธ์ž๋Š” ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์–ด. ์•„์ฐธ! ์ผ๋ถ€ ํฌ์ผ“๋ชฌ์€ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋งŒ ๋Œ€๋ฌธ์ž์ผ ์ˆ˜๋„ ์žˆ์–ด. ํฌ์ผ“๋ชฌ ์ด๋ฆ„์˜ ์ตœ๋Œ€ ๊ธธ์ด๋Š” 20, ์ตœ์†Œ ๊ธธ์ด๋Š” 2์•ผ. ๊ทธ ๋‹ค์Œ ์ค„๋ถ€ํ„ฐ ์ด M๊ฐœ์˜ ์ค„์— ๋‚ด๊ฐ€ ๋งž์ถฐ์•ผํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์ž…๋ ฅ์œผ๋กœ ๋“ค์–ด์™€. ๋ฌธ์ œ๊ฐ€ ์•ŒํŒŒ๋ฒณ์œผ๋กœ๋งŒ ๋“ค์–ด์˜ค๋ฉด ํฌ์ผ“๋ชฌ ๋ฒˆํ˜ธ๋ฅผ ๋งํ•ด์•ผ ํ•˜๊ณ , ์ˆซ์ž๋กœ๋งŒ ๋“ค์–ด์˜ค๋ฉด, ํฌ์ผ“๋ชฌ ๋ฒˆํ˜ธ์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž๋ฅผ ์ถœ๋ ฅํ•ด์•ผํ•ด. ์ž…๋ ฅ์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ์ˆซ์ž๋Š” ๋ฐ˜๋“œ์‹œ 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , N๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๊ณ , ์ž…๋ ฅ์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ๋ฌธ์ž๋Š” ๋ฐ˜๋“œ์‹œ ๋„๊ฐ์— ์žˆ๋Š” ํฌ์ผ“๋ชฌ์˜ ์ด๋ฆ„๋งŒ ์ฃผ์–ด์ ธ. ๊ทธ๋Ÿผ ํ™”์ดํŒ…!!!

 

์ œํ•œ ์‚ฌํ•ญ

  • ์‹œ๊ฐ„ ์ œํ•œ : 2์ดˆ
  • ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ : 256 MB

 

์ถœ๋ ฅํ˜•์‹

์ฒซ์งธ ์ค„๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ M๊ฐœ์˜ ์ค„์— ๊ฐ๊ฐ์˜ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋‹ต์„ ๋งํ•ด์คฌ์œผ๋ฉด ์ข‹๊ฒ ์–ด!!!. ์ž…๋ ฅ์œผ๋กœ ์ˆซ์ž๊ฐ€ ๋“ค์–ด์™”๋‹ค๋ฉด ๊ทธ ์ˆซ์ž์— ํ•ด๋‹นํ•˜๋Š” ํฌ์ผ“๋ชฌ์˜ ์ด๋ฆ„์„, ๋ฌธ์ž๊ฐ€ ๋“ค์–ด์™”์œผ๋ฉด ๊ทธ ํฌ์ผ“๋ชฌ์˜ ์ด๋ฆ„์— ํ•ด๋‹นํ•˜๋Š” ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ๋ผ. ๊ทธ๋Ÿผ ๋•กํ~

์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

26 5
Bulbasaur
Ivysaur
Venusaur
Charmander
Charmeleon
Charizard
Squirtle
Wartortle
Blastoise
Caterpie
Metapod
Butterfree
Weedle
Kakuna
Beedrill
Pidgey
Pidgeotto
Pidgeot
Rattata
Raticate
Spearow
Fearow
Ekans
Arbok
Pikachu
Raichu
25
Raichu
3
Pidgey
Kakuna

 

 

ํ’€์ด ๊ณผ์ •

์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜ ๊ตฌ๋ฌธ์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

ios_base::sync_with_stdio(false);

cin.tie(NULL);

์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š”?  ์—ฌ๋Ÿฌ ์ปดํŒŒ์ผ๋Ÿฌ์˜ sync๋ฅผ ๋งž์ถ”๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€

 

input์œผ๋กœ ๋ฌธ์ž์—ด์ด ๋“ค์–ด์˜ฌ ์ˆ˜๋„ ์žˆ๊ณ , ์ •์ˆ˜๊ฐ’์ด ๋“ค์–ด์˜ฌ ์ˆ˜๋„ ์žˆ์œผ๋ฏ€๋กœ

๋ฐฐ์—ด ๋‘๊ฐ€์ง€๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ–ˆ๋Š”๋ฐ

string -> int ์ผ ๋•Œ๋Š” 

  • map ์‹œ๊ฐ„ ๋ณต์žก๋„ O (logN)
  • array ์‹œ๊ฐ„ ๋ณต์žก๋„ O(N)

int -> string ์ผ ๋•Œ๋Š”

  • map ์‹œ๊ฐ„ ๋ณต์žก๋„ O(logN)
  • array ์‹œ๊ฐ„ ๋ณต์žก๋„ O (1)

์ด์—ฌ์„œ string์—์„œ int ๊ฐ’์„ ์ฐพ์„ ๋•Œ๋Š” map

int์—์„œ string ๊ฐ’์„ ์ฐพ์„ ๋•Œ๋Š” array๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค!

 

 

 

#include <bits/stdc++.h>

using namespace std;

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL); cout.tie(NULL);
  int n, k;
  cin >> n >> k;
  string arr[100004];
  map<string, int> name_map2;
  string temp;
  for (int i = 1; i <= n; i++) {
    cin >> temp;
    arr[i] = temp;
    name_map2[temp] = i;
  }
  for (int j = 0; j < k; j++) {
    cin >> temp;
    if (atoi(temp.c_str()) == 0) {
      cout << name_map2[temp] << '\n';
    } else {
      cout << arr[atoi(temp.c_str())] << '\n';
    }
  }

  return 0;
}

 

 

๋ฐ˜์‘ํ˜•