[숫자카드2] : https://www.acmicpc.net/problem/10816
문제를 읽으면서 주어진 입력수가 많아 어떻게 처리해야할지 생각했고, 어떤 방법으로 풀지 고민했던 것 같다.
import sys
t = int(sys.stdin.readline())
num_card = list(map(int, sys.stdin.readline().split()[:t]))
n = int(sys.stdin.readline())
compare_card = list(map(int, sys.stdin.readline().split()[:n]))
result = [0] * n
for i in range(len(compare_card)):
for j in range(len(num_card)):
if compare_card[i] == num_card[j]:
result[i] += 1
else:
continue
for z in result:
print(z, end=' ')
몇개의 숫자가 들어갈지 입력받아서 [:t]
를 통해 리스트의 개수 제한을 두었다. 그리고 결과를 도출할 리스트를 비교할 숫자카드의 개수에 맞춰 만들었고, 이중 반복문을 통해 가지고 있는 숫자카드를 비교하여 result
에 개수를 올려주는 방식으로 풀었다.
문제를 풀면서 사전에 해결해야 됐던 input()
문제가 있었다. 풀이를 제출할때 계속 시간 초과가 뜨길래 입력수에 대한 오류라고 생각했고, 이를 해결하기위해 검색을 통해 도움을 받았다.(출처:https://velog.io/@yeseolee/Python-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%9E%85%EB%A0%A5-%EC%A0%95%EB%A6%ACsys.stdin.readline)
데이터를 반복적으로 입력받아야할때 sys.stdin.readline()
을 사용하면 성능이 향상되는것을 알았고, 이전 코드들을 수정하면서 자주 이용할 예정이다.
기존에 막혀있던 부분을 해결하면서 문제도 수월하게 풀려나갔고, 문제를 풀고나니 뿌듯하다.