728x90
반응형
목차
문제
https://www.acmicpc.net/problem/1764
설계&풀이과정
먼저 시간초과가 난 내 코드다.
import sys
# 시간초과 풀이
n, m = map(int, input().split())
hPeople = [ sys.stdin.readline().rstrip() for _ in range(n) ]
sPeople = [ sys.stdin.readline().rstrip() for _ in range(m) ]
answer = []
for i in hPeople:
if i in sPeople:
answer.append(i)
for i in sPeople:
if i in hPeople:
if i in answer:
continue
else:
answer.append(i)
print(len(answer))
print('\n'.join(answer))
리스트에 하나씩 입력받고 for문으로 체크했는데, 짜면서도 이건 시간초과가 날거같은데..? 했는데 역시나였다.
그래서 내가 뭔가 모르는 알고리즘이 있나... 하고 찾아봤는데.. set이라는게 있더라..
그냥 파이썬 문법 자체가 익숙하지 않아서 못푼거같다;; 문제 자체는 쉬운디..
그리고 마지막 줄에 배열을 한줄씩 출력할 때도 for문말고 다른 방법이 있나 해서 찾아봤는데, join 문법이 있었다.
이런 문법적인 요소는 계속 풀다보면 익숙해지겠지.
아무튼 답은 다음과 같다.
import sys
n, m = map(int, input().split())
hPeople = [ sys.stdin.readline().rstrip() for _ in range(n) ]
sPeople = [ sys.stdin.readline().rstrip() for _ in range(m) ]
answer = list(set(hPeople) & set(sPeople))
answer.sort()
print(len(answer))
print('\n'.join(answer))
코드 GIT 주소
코드
import sys
n, m = map(int, input().split())
hPeople = [ sys.stdin.readline().rstrip() for _ in range(n) ]
sPeople = [ sys.stdin.readline().rstrip() for _ in range(m) ]
answer = list(set(hPeople) & set(sPeople))
answer.sort()
print(len(answer))
print('\n'.join(answer))
결과
구독 및 하트는 정보 포스팅 제작에 큰 힘이됩니다♡
728x90
반응형
'PS, 언어 공부 > 알고리즘 문제풀이' 카테고리의 다른 글
[Python] Programmers 더 맵게 (0) | 2022.06.10 |
---|---|
[Python] 백준 온라인 저지 2606 (0) | 2022.05.25 |
[알고리즘 이론] 다익스트라(Dijkstra), 최단 경로 알고리즘 (0) | 2022.04.24 |
[Python] 백준 온라인 저지 1003 (0) | 2022.04.23 |
[C++] 백준 온라인 저지 2869 (0) | 2020.09.16 |