๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm/๋ฐฑ์ค€(BOJ)

[ ํŒŒ์ด์ฌ(python) ] ๋ฐฑ์ค€ 1620 - ๋‚˜๋Š”์•ผ ํฌ์ผ“๋ชฌ ๋งˆ์Šคํ„ฐ ์ด๋‹ค์†œ

by YWTechIT 2021. 6. 28.
728x90

๐Ÿ“ ๋ฐฑ์ค€ 1620 - ๋‚˜๋Š”์•ผ ํฌ์ผ“๋ชฌ ๋งˆ์Šคํ„ฐ ์ด๋‹ค์†œ

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


โšก๏ธ ๋‚˜์˜ ํ’€์ด

ํฌ์ผ“๋ชฌ์„ ์ข‹์•„ํ•ด์„œ ํ’€์–ด๋ดค๋‹ค.

 

์ž…๋ ฅ์˜ ๋ฒ”์œ„๊ฐ€ 100,000๊นŒ์ง€๋กœ ์ฃผ์–ด์ ธ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌ์ŠคํŠธ๋กœ ํ’€๊ธฐ์— ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚  ๊ฒƒ ๊ฐ™์•„ dict์˜ hash๋ฅผ ์ด์šฉํ•˜์—ฌ ํ’€์—ˆ๋‹ค. (hash ์ ‘๊ทผ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(1))

 

dict์—์„œ value์˜ ๊ฐ’์„ ์ฐพ๋Š”๊ฒƒ์€ dict[key]๋ฅผ ๋„ฃ์œผ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„๊ต์  ์‰ฌ์› ์œผ๋‚˜ ๋ฐ˜๋Œ€๋กœ key๋ฅผ ์ฐพ๋Š”๊ฒƒ์€ dict๋กœ๋Š” ์ฐพ์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— dict.keys()๋งŒ์„ ๋ฝ‘์•„ ๋ฆฌ์ŠคํŠธ๋กœ ๋งŒ๋“œ๋Š” list(dict.keys())๋ฅผ ์‚ฌ์šฉํ–ˆ๊ณ , ์—ฌ๊ธฐ์„œ ๋ช‡ ๋ฒˆ์งธ์ธ์ง€ ์•Œ๊ธฐ ์œ„ํ•ด ์ธ๋ฑ์‹ฑ์„ ์‚ฌ์šฉํ–ˆ๋‹ค.

 

  1. ์ž…๋ ฅ์„ key:value ํ˜•ํƒœ์ธ dict๋กœ ๋„ฃ์–ด์ค€๋‹ค.(์ด๋•Œ, key๋Š” ํฌ์ผ“๋ชฌ ์ด๋ฆ„, value๋Š” ์ž…๋ ฅ ์ˆœ์„œ)
  2. key๋งŒ ๋ชจ์•„ ์ƒˆ๋กœ์šด list๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  3. ์ž…๋ ฅ์ด isdigit()๋ฉด key๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  not isdigit()๋ฉด value๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

# ๋‚˜์˜ ์ฝ”๋“œ
import sys
input = sys.stdin.readline

n, m = map(int, input().split())
pocket_books = {}

for i in range(1, n+1):
    name = input().strip()
    pocket_books[name] = i

pocket_books_keys = list(pocket_books.keys())

for _ in range(m):
    name_or_number = input().strip()
    if name_or_number.isdigit():
        print(pocket_books_keys[int(name_or_number) - 1])
    else:
        print(pocket_books[name_or_number])
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€