첫번째 코드
투포인트를 이용한 상황에서 조금 더 신경쓰면 될 것 같다..?
import sys
input = sys.stdin.readline
n = int(input())
number = list(map(int, input().split()))
target = 2
good = []
sort_number = sorted(number)
while target != n:
one = 0
two = target - 1
while one < two:
sum = sort_number[one] + sort_number[two]
target_no = sort_number[target]
if sum == target_no:
good.append(target_no)
one += 1
two -= 1
break
elif sum < target_no:
one += 1
else:
two -= 1
target += 1
print(len(good))
오류!!!!
흠.... ?
두 번째 코드
원인 파악에서 고민을 많이했는데
책의 코드와 비교한 결과 "어떤 수가 다른 수 두 개의 합" 이게 문제였던 것 같다!
import sys
input = sys.stdin.readline
n = int(input())
number = list(map(int, input().split()))
answer = 0
sort_number = sorted(number)
for k in range(n):
target = sort_number[k]
one = 0
two = n-1
while one < two:
sum = sort_number[one] + sort_number[two]
if sum == target:
if one != k and two != k:
answer += 1
break
elif one == k:
one += 1
elif two == k:
two -= 1
elif sum < target:
one += 1
else:
two -= 1
print(answer)
통과!
문제 열심히 읽자! 빼먹지 말고!!
링크
'코딩 테스트 > do it! 알고리즘 코딩테스트' 카테고리의 다른 글
010 최솟값 찾기 (0) | 2024.04.15 |
---|---|
009 DNA 비밀번호 (2) | 2024.04.15 |
007 주몽 (0) | 2024.04.11 |
006 수들의 합 5 (0) | 2024.04.08 |
005 나머지 합 (0) | 2024.04.08 |