https://www.acmicpc.net/problem/1620
문제 해결 방법
딕셔너리를 잘 활용하여 문제를 해결한다.
코드 구현
정답 코드
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
dic = {}
revDic = {}
for i in range(n):
tmpS = input().strip()
dic[i+1]=tmpS
revDic[tmpS]=i+1
for i in range(m):
tmpV = input().strip()
if tmpV.isdigit():
tmpV= int(tmpV)
print(dic[tmpV])
else:
print(revDic[tmpV])
시간/공간 복잡도
O(n)
어려웠던 점
- 자료구조 조회할 때, 시간초과를 해결하기 위해서는 리스트보다 해시테이블을 구조인 딕셔너리 사용(O(1)) 이 더 빠르기 때문에 효과적이다.
알게된 점
- 키 값을 통해 값을 찾거나 밸류 값을 통해 값을 찾아야 하는 경우, 두개의 딕셔너리를 활용하면 아주 효율적이다.
- 문자열이 숫자 값인지 확인할때, 대상.isdigit()함수를 사용하면 확인할 수 있다. (숫자일 경우 True 반환)
'코딩테스트 > 문제 풀이 - Python' 카테고리의 다른 글
[백준11279] 최대 힙 (0) | 2024.10.02 |
---|---|
[백준14503] 로봇 청소기 (1) | 2024.10.01 |
[백준1003] 피보나치 함수 (0) | 2024.09.09 |
[백준11723] 집합 (0) | 2024.09.09 |
[백준1012] 유기농 배추 (0) | 2024.09.09 |