💡 조합 & 투포인터 다시 확인하기!!

< 오답 코드 >
from itertools import combinations
n = int(input())
num = list(map(int, input().split(' ')))
comb = list(combinations(num,2))
print(comb)
count = 0
for a,b in comb:
if (a + b == 13):
count += 1
print(count)
<오답코드>
n = int(input())
num = list(map(int, input().split(' ')))
x = int(input())
count = 0
start = 0
end = n-1
while(start < n-1):
if num[start] + num[end] == x:
count += 1
if start == end:
start += 1
end = n-1
else:
end -= 1
print(count)
<정답코드>
n = int(input())
num = list(map(int, input().split(' ')))
x = int(input())
count = 0
start = 0
end = n-1
# 오름차순 정렬
num.sort()
while(start < end):
result = num[start] + num[end]
if result == x:
start += 1
count += 1
elif result < x:
start += 1
else:
end -= 1
print(count)
💡 코딩테스트 중 나온 기발한 접근법
n = int(input())
seq = input().split()
x = int(input())
max_value = 1000000
arr = [0] * (max_value + 1)
result = 0
for i in range (0, n):
num = int(seq[i])
y = x - num
if 0 <= y <= max_value and arr[y] == 1:
result += 1
arr[num] = 1
else:
arr[num] = 1
print(result)