PS, 언어 공부/알고리즘 문제풀이

[Python] 백준 온라인 저지 1764

Emil :) 2022. 5. 6. 11:17
728x90
반응형

목차

문제


https://www.acmicpc.net/problem/1764

 

1764번: 듣보잡

첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다.

www.acmicpc.net

 

 

설계&풀이과정


먼저 시간초과가 난 내 코드다.

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이라는게 있더라..

https://wikidocs.net/16044

 

18. set(집합)

## 1. set(집합) - set은 수학에서 이야기하는 집합과 비슷합니다. - 순서가 없고, 집합안에서는 unique한 값을 가집니다. - 그리고 mutable 객체입 ...

wikidocs.net

그냥 파이썬 문법 자체가 익숙하지 않아서 못푼거같다;; 문제 자체는 쉬운디..

그리고 마지막 줄에 배열을 한줄씩 출력할 때도 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 주소


https://github.com/kkkapuq/AlgorithmStudy/tree/main/Python/220505_BOJ_1764_%EB%93%A3%EB%B3%B4%EC%9E%A1

 

GitHub - kkkapuq/AlgorithmStudy: 알고리즘 문제풀이

알고리즘 문제풀이. Contribute to kkkapuq/AlgorithmStudy development by creating an account on GitHub.

github.com

 

코드


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
반응형