https://www.acmicpc.net/problem/1920
백준 문제를 풀면서 위 문제를 풀 수 있는 흥미로운 방법을 찾아내어 기록합니다.
위 문제를 처음 봤을 때 저의 풀이입니다.
N = input()
A = list(map(int, input().split()))
M = input()
lstM = list(map(int, input().split()))
for ele in lstM:
if ele in A:
print(1)
else:
print(0)
해당 문제를 해결하기 위해서 in 을 활용하였습니다.
위 방식은 심플하고 좋아보이지만 python3으로 해결하려고 하면 시간초과가 발생합니다. (하지만 pypy3은 괜찮아요)
이번에는 패스트캠퍼스 강의를 통해서 알게된 풀이 방식입니다.
N, A = int(input()), {i:1 for i in map(int, input().split())}
M, B = int(input()), list(map(int, input().split()))
for i in range(M):
print(A.get(B[i],0))
위 문제의 핵심은 딕셔너리를 활용하는 것입니다. 입력 받을 때 {} 안에 for 문을 활용하여 입력값들을 딕셔너리로 받습니다. 그리고, get함수를 통해서 첫번째 인자 값이 존재하지 않는다면 2번째 인자 값을 반환하도록 합니다.
위와 같은 방식으로 딕셔너리를 활용하여 코딩할 수 있습니다.
'알고리즘' 카테고리의 다른 글
[백준] 2차원 배열의 합 (0) | 2022.01.24 |
---|---|
2차원 배열 정렬을 배우기 좋은 APC는 왜 서브태스크 대회가 되었을까? (0) | 2022.01.13 |
[프로그래머스] 문자열 압축 (0) | 2022.01.04 |
[이코테] 문자열 재정렬 (0) | 2022.01.04 |
볼링공 고르기[이코테] 그리디 (0) | 2022.01.03 |