공부하는허딩크 : https://www.youtube.com/live/S9Tn1JM6-yc?feature=shared
 
 
문제가 너무 길다. 다 필요 없고 입력과 출력 조건만 보면 된다.
 
결론은 도감에 수록되어 있는 몬스터들이 있다. 그 다음 문제로 내는 몬스터 이름과 숫자가 도감에 있는지 여부 및 출력하는 것이다. 
 
시간제한 2초로 도감을 list로 만들어서 enumerate로 인덱스와 값을 찾아서 문제를 풀기에는 일단 시간초과가 나올 것으로 예상되었다.
 
<첫번째 시도 : 시간초과>
일단 도감을 dict로 만들어주고 문제를 하나씩 받아서 value와 key값을 비교 후 출력함 => 이중for문 사용
#시간초과 : 이중for문을 풀어야함.
N, M = map(int, input().split())
monster = {}
for i in range(1, N + 1):
    name = input().strip()
    monster[i] = name
for _ in range(M):
    question = input().strip()
    for key, value in monster.items():
        if question == value:
            #print("정답 :", key)
            print(key)
        elif question == str(key):
            #print("정답 :", value)
            print(value)
 
 
<두번째 시도 : 통과>
도감을 dict로 만들어 주는 건 동일하나, 도감을 2개 만들었다. key와 value가 반대로 되는 도감을 하나 더 만들어서
문제를 받을때 마다 if로 조건 체크 후 출력함.
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
monster = {}
for i in range(1, N + 1):
    name = input().strip()
    monster[str(i)] = name
    
monster_reverse = {value: key for key, value in monster.items()}
for _ in range(M):
    question = input().strip()
    if question in monster.keys():
        print(monster[question])
    elif question in monster_reverse.keys():
        print(monster_reverse[question])
 
 
<다른사람풀이 참고>
1. 도감 만들때 부터 2개로 만든다. : 굳이 나중에 iterms()사용 하지 않아도 됨.
N, M = map(int, input().split())
monster = {}
monster_re = {}
for i in range(1, N + 1):
    name = input().strip()
    monster[str(i)] = name
    monster[name] = str(i)
 
 
2. isdigit()과 isnumeric() 사용
    ㄴ isdigit()은 0~9까지의 숫자로만 사용되었는지 확인 : 소수점이나 음수 기호와 같은 다른 유형의 숫자는 인식하지 않음
    ㄴ isnumeric()은 isdigit보다 더 넓은 범위 숫자형식 : 유니코드의 숫자형식, 로마숫자, 중국어숫자등
내 코드보다 아래의 코드로 수정하는 것이 조금 더 효율적이고 가독성이 좋다.
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
monster = {}
monster_re = {}
for i in range(1, N + 1):
    name = input().strip()
    monster[i] = name
    monster_re[name] = i
    
for _ in range(M):
    question = input().strip()
    if question.isdigit():
        print(monster[int(question)])
    else:
        print(monster_re[question])
 
 
3. try, except사용 : 나도 코드 작성시 이걸 생각했는데 굳이 필요 없을 것 같아서 안했음. try except가 아직 익숙하지 않음.
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
monster = {}
monster_re = {}
answer = []
for i in range(1, N + 1):
    name = input().strip()
    monster[i] = name
    monster_re[name] = i
    
for _ in range(M):
    question = input().strip()
    try:
        num = int(question)
        answer.append(monster[num])
    except ValueError:
        answer.append(monster_re[question])
for i in answer:
    print(i)