반응형
회고
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
import sys
N = int(sys.stdin.readline())
Nlist = [] * N
Nlist = list(map(int, sys.stdin.readline().split()))
M = int(sys.stdin.readline())
Mlist = [] * M
Mlist = list(map(int, sys.stdin.readline().split()))
find = []
find = list(set(Mlist) & set(Nlist))
result = []
for i in range(M):
for j in range(len(find)):
if Mlist[i] == find[j]:
result.append(1)
break
else:
if j == len(find) - 1:
result.append(0)
break
for i in result:
print(i,end=" ")
print("")
|
cs |
처음 풀이 이다. 시간초과가 떠서 문제점을 파악한다.
1. 입력 부분에서는 input()대신 sys를 써서 별 탈 없어 보인다.
2. list(set()) 부분 또 한 O(n)
3.append 또한 O(1)
4. 이중for문이 범인이 유력한 상황이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import sys
N = int(sys.stdin.readline())
Nlist = [] * N
Nlist = list(map(int, sys.stdin.readline().split()))
M = int(sys.stdin.readline())
Mlist = [] * M
Mlist = list(map(int, sys.stdin.readline().split()))
find = []
find = list(set(Mlist) & set(Nlist))
result = [1 if num in find else 0 for num in Mlist]
print(*result)
|
cs |
해당코드로 2중 for문을 없앳지만 또 시간 초과 발생..
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
import sys
N = int(sys.stdin.readline())
Nlist = list(map(int, sys.stdin.readline().split()))
M = int(sys.stdin.readline())
Mlist = list(map(int, sys.stdin.readline().split()))
find = set(Nlist)
result = []
for num in Mlist:
if num in find:
result.append(1)
else:
result.append(0)
print(*result)
|
cs |
휴우... 이유는 먼저 리스트에 할당을 해서이다... 참... 입력처리에서 문제가 생겼었다니..
그리고 if - in을 통해 존재 확인을 하는방법을 알게 되엇따!
c++에 비해 파이썬은 함수가 많고 매력적이나, 이런 시간을 늘 생각해야한다는게 참 흠이다. ㅠㅠ
반응형
'CS, 알고리즘 > 알고리즘 및 코테' 카테고리의 다른 글
백준1181번 문제(파이썬) (0) | 2023.06.27 |
---|---|
[알고리즘] 계수정렬(Counting Sort) .feat 백준 10989번(파이썬) (0) | 2023.06.25 |