๐Ÿ—๏ธ Algorithm/๐ŸŸฉ ๋ฐฑ์ค€

๐ŸŸฉ [๋ฐฑ์ค€] [Python] Class3_1620๋ฒˆ_ ๋‚˜๋Š”์•ผ ํฌ์ผ“๋ชฌ ๋งˆ์Šคํ„ฐ ์ด๋‹ค์†œ

Dbswnstjd 2022. 10. 31. 23:23

๋ฌธ์ œ

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

 

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

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

www.acmicpc.net

ํ’€์ด

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

n, m = map(int, input().split())

# ๋ฆฌ์ŠคํŠธ์— ํฌ์ผ“๋ชฌ ์ €์žฅ
pokedic_int_key = {}  # Key๊ฐ’์ด int์ธ dictionary
pokedic_name_key = {}  # Key๊ฐ’์ด str์ธ dictionary
for i in range(n):
    name = sys.stdin.readline().strip()
    pokedic_int_key[i] = name
    pokedic_name_key[name] = i

# ํฌ์ผ“๋ชฌ ํƒ์ƒ‰
for _ in range(m):
    item = sys.stdin.readline().strip()
    # ์ž…๋ ฅ๊ฐ’์ด int์ผ ๊ฒฝ์šฐ, key๊ฐ’์ด int์ธ dictionary์—์„œ value๋ฅผ ๊ฐ€์ ธ์˜ด
    if item.isdigit() == True:  # isdigit -> O(n)
        print(pokedic_int_key[int(item)-1])
    # ์ž…๋ ฅ๊ฐ’์ด int๊ฐ€ ์•„๋‹ ๊ฒฝ์šฐ (๋ฌธ์ž์—ด์ผ๊ฒฝ์šฐ), key๊ฐ’์ด str์ธ dictionary์—์„œ value๋ฅผ ๊ฐ€์ ธ์˜ด
    else:
        print(pokedic_name_key[item]+1)

์ฒ˜์Œ์— ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋– ์„œ ์ƒ๊ฐ์„ ๋” ํ•ด๋ณธ ๊ฒฐ๊ณผ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•˜๋ฉด ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ์ค„์–ด๋“ค๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋ ‡๊ฒŒ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.