파이썬 백준 14425번
https://www.acmicpc.net/problem/14425
14425번: 문자열 집합
첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어
www.acmicpc.net
문제 보기

문제 풀기
아무 생각 없이 쉬워 보이는 문제를 선택하고 풀고 나서, 기록과 정리를 위해 이곳에 글을 쓰다가 이 문제는 arrray 를 사용하는 게 아니라 set() 을 사용해야 한다는 생각이 들었다.
다시 수정하여 정답을 제출. set() 사용 연습을 하자.
N 번 받아오는 각 문자열을 S 에 차례대로 추가를 한 후, set 또는 array 안에 해당 원소가 있는지 확인하는 코드를 작성함.
확인 시 해당 원소가 있다면 변수 count 를 하나씩 증가시켜 정답의 개수를 도출.
코드 보기
@ array 를 사용하여 풀었을 때,
import sys inputdata = sys.stdin.readline N, M = map(int, inputdata().split()) S = [] for _ in range(N): source = inputdata().strip() S.append(source) count = 0 for _ in range(M): check_word = inputdata().strip() if check_word in S: count += 1 print(count) # 5 11 # baekjoononlinejudge # startlink # codeplus # sundaycoding # codingsh # baekjoon # codeplus # codeminus # startlink # starlink # sundaycoding # codingsh # codinghs # sondaycoding # startrink # icerink # 4
@ set 을 사용하여 풀었을 때,
import sys inputdata = sys.stdin.readline N, M = map(int, inputdata().split()) S = set() for _ in range(N): source = inputdata().strip() S.add(source) count = 0 for _ in range(M): check_word = inputdata().strip() if check_word in S: count += 1 print(count) # 5 11 # baekjoononlinejudge # startlink # codeplus # sundaycoding # codingsh # baekjoon # codeplus # codeminus # startlink # starlink # sundaycoding # codingsh # codinghs # sondaycoding # startrink # icerink # 4
@ array 와 set 차이

위: set, 148 ms
아래: array, 3728 ms
'공부하기 > 백준' 카테고리의 다른 글
[Python] 백준 풀기 1620 - 나는야 포켓몬 마스터 이다솜 (0) | 2022.09.28 |
---|---|
[Python] 백준 풀기 24416 - 알고리즘 수업, 피보나치 수 1 (0) | 2022.09.27 |
[Python] 백준 풀기 10866 - 덱 (2) | 2022.09.24 |
[Python] 백준 풀기 25501 - 재귀의 귀재 (2) | 2022.09.23 |
[Python] 백준 풀기 10870 - 피보나치 수 5 (0) | 2022.09.22 |