ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90

๐Ÿšฉ ์ž๋ฃŒ๊ตฌ์กฐ, ๋ฌธ์ž์—ด, ํ•ด์‹œ๋ฅผ ์ด์šฉํ•œ ์ง‘ํ•ฉ๊ณผ ๋งต

 

1. ์‹œ๊ฐ„์ดˆ๊ณผ (fail)

๋ฌธ์ œ๋ณด์ž๋งˆ์ž ๋ฐ”๋กœ enumerate์œผ๋กœ index๋ž‘ value ์ถœ๋ ฅํ–ˆ๋Š”๋ฐ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚ฌ๋‹ค.

N, M = map(int, input().split())
lst = [input() for _ in range(N)]
quest = [input() for _ in range(M)]
for j in range(M):
    for i, v in enumerate(lst):
    # print(i, type(i), v, type(v))  # 0 <class 'int'> Bulbasaur <class 'str'>
        if quest[j] == v:
            print(i+1)
        if quest[j] == str(i+1):
            print(v)

ํ˜น์‹œ๋ชฐ๋ผ sys.stdin.readline() ๋„ ์ถ”๊ฐ€ํ•ด์คฌ๋Š”๋ฐ ์ด๊ฑด ์˜๋ฏธ๊ฐ€ ์—†์—ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ๋ณด๋‹ˆ 1 ≤ N, M ≤ 100,000 ์ด์–ด์„œ ์ด์ค‘ for๋ฌธ์„ ๋„๋Š” ๊ฒฝ์šฐ
์ตœ์•…์˜ ๊ฒฝ์šฐ, 10,000,000,000 ๋ฐฑ์–ต๋ฒˆ์˜ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ด์„œ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚œ ๊ฒƒ ๊ฐ™๋‹ค.

๊ทธ๋Ÿผ ์‹œ๊ฐ„์ดˆ๊ณผ ์•ˆ๋‚˜๋ ค๋ฉด ์ด์ค‘for๋ฌธ ์•ˆ๋Œ์•„์•ผ ํ•˜๋Š”๋ฐ for๋ฌธ ํ•œ๋ฒˆ์œผ๋กœ ์ธ๋ฑ์Šค๋ž‘ ๋ฐธ๋ฅ˜๋ฅผ ์–ด์ผ€ ์ฐพ์ง€??

โญ ๋ฐ˜๋ณต๋ฌธ ์•ˆ๋Œ๋ฉด์„œ ๊ฐ’ ์ฒดํ‚นํ•˜๋ ค๋ฉด ->    dictionary    !!!

 

2. pass ๐Ÿ˜€

1. quest = [input() for _ in range(M)] ๋„ ๊ตณ์ด ๋ฆฌ์ŠคํŠธ๋กœ ๋ฐ›์„ ์ด์œ ๊ฐ€ ์—†์—ˆ๋‹ค.
   ๊ทธ๋ƒฅ ๋“ค์–ด์˜ค๋Š” ์กฑ์กฑ ์ฒดํ‚นํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

2. ๋”•์…”๋„ˆ๋ฆฌ ํ•˜๋‚˜๋กœ ๊ตฌ์„ฑํ•˜๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ for _ in dic.keys(): ๋ฅผ ์•ˆ๋Œ๊ณ ๋Š” ํŠน์ • key๊ฐ’๋งŒ์„ ์ถœ๋ ฅํ•˜๊ธฐ ์–ด๋ ค์›Œ์„œ
   for๋ฌธ์„ ์•ˆ๋Œ๊ณ ์ž ๋”•์…”๋„ˆ๋ฆฌ 2๊ฐœ๋กœ ๊ตฌ์„ฑํ–ˆ๋‹ค.

    dict_n = {'25': 'Pikachu'}  : ์ˆซ์ž์ ‘๊ทผ์œผ๋กœ ๋ฌธ์ž์ถœ๋ ฅ์šฉ
    dict_s = {'Pikachu': 25}   : ๋ฌธ์ž์ ‘๊ทผ์œผ๋กœ ์ˆซ์ž์ถœ๋ ฅ์šฉ

3. ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ์—ฌ๋Ÿฌ์ค„์„ ์ž…๋ ฅ๋ฐ›๋Š” ๋ฌธ์ œ์ด๊ธฐ ๋•Œ๋ฌธ์— input() ๋Œ€์‹  sys.stdin.readline()์„ ์‚ฌ์šฉํ–ˆ๋‹ค.
   ์ด๊ฑฐ ์“ฐ๋ ค๋ฉด ๋ฌธ์ž์—ด ์ธํ’‹๋ฐ›์„๋•Œ input().strip() ์ด๋ ‡๊ฒŒ ๋ฐ›์•„์•ผํ•œ๋‹ค.
   ๋’ค์— \n์ด ๋ถ™์–ด ๊ฐ™์ด ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ž์—ด ๋งจ ์•ž๊ณผ ๋งจ ๋์˜ ๊ณต๋ฐฑ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•ด์•ผํ•œ๋‹ค.

import sys
input = sys.stdin.readline

N, M = map(int, input().split())
dic_n = {}  # {'25': 'Pikachu'}. ์ˆซ์ž์ ‘๊ทผ์œผ๋กœ ๋ฌธ์ž์ถœ๋ ฅ์šฉ
dic_s = {}  # {'Pikachu': 25}. ๋ฌธ์ž์ ‘๊ทผ์œผ๋กœ ์ˆซ์ž์ถœ๋ ฅ์šฉ
for i in range(N):
    value = input().strip()
    dic_n[str(i+1)] = value
    dic_s[value] = i+1

for j in range(M):
    quest = input().strip()
    if quest.isdigit():  # ์ˆซ์ž๋ฉด ๋ฌธ์ž์ถœ๋ ฅ
        print(dic_n[quest])
    if quest.isalpha():  # ๋ฌธ์ž๋ฉด ์ˆซ์ž์ถœ๋ ฅ
        print(dic_s[quest])

 

๋Œ“๊ธ€