- 백준 1764번 풀이2023년 10월 29일
- Lv. 34 라이츄
- 작성자
- 2023.10.29.:34
문제
https://www.acmicpc.net/problem/1764
두 집합(듣지 못함/보지 못함)의 교집합을 출력하시오
풀이
이 문제는 굉장히 심플한 문제다. 푸는 것 자체는 그런데 출력이 씁...
import sys N, M = map(int, sys.stdin.readline().split()) not_heard = set() #듣지 못한 사람 not_saw = set() # 보지 못한 사람 for _ in range(N): not_heard.add(sys.stdin.readline().rstrip()) for _ in range(M): not_saw.add(sys.stdin.readline().rstrip())
일단 집합(set)을 두 개 만들건데, 첫번째는 듣지 못한 사람이고 두번째는 보지 못한 사람이다. 아니 입력 순서가 듣-보임. 아무튼, 빈 집합을 만들고 입력 받자마자 추가하게 해 준다. 혹시나 중복되더라도 set 자료형은 알아서 중복 걸러주니까 걱정 ㄴㄴ.
not_heard_saw = not_heard & not_saw not_heard_saw = list(not_heard_saw) not_heard_saw.sort() print(len(not_heard_saw)) for i in not_heard_saw: print(i)
다음은 출력인데... 일단 아래 세 줄은 길이와 요소를 출력하는거니까 설명은 생략한다. 솔직히 이거 풀 짬이면 다들 알잖아요 뭔지...
위의 세 줄은 순서대로 1) 교집합을 구하고 2) 그걸 리스트로 바꿔서 3) 정렬하는 코드이다. 출력 사전순이니까 정렬해야지.
import sys N, M = map(int, sys.stdin.readline().split()) not_heard = set() #듣지 못한 사람 not_saw = set() # 보지 못한 사람 for _ in range(N): not_heard.add(sys.stdin.readline().rstrip()) for _ in range(M): not_saw.add(sys.stdin.readline().rstrip()) not_heard_saw = not_heard & not_saw not_heard_saw = list(not_heard_saw) not_heard_saw.sort() print(len(not_heard_saw)) for i in not_heard_saw: print(i)
그래서 놀랍게도 이걸로 한방에 맞췄다.
'BOJ > [BOJ] Python' 카테고리의 다른 글
백준 11478번 풀이 (0) 2023.12.10 백준 1269번 풀이 (0) 2023.10.29 백준 1934번 풀이 (0) 2023.10.19 백준 10816번 풀이 (0) 2023.08.10 백준 7785번 풀이 (0) 2023.08.04 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)