[백준/BOJ][Python] 1253번 좋다

Eunding·2024년 12월 12일

algorithm

목록 보기
73/110

1253번 좋다

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


아이디어

아이디어를 떠올리는 게 어렵고 구현은 쉬운 문제였다.

arr[i]가 좋은 수인지 투포인터로 합을 구한다.

1) arr[i]가 좋은 수인지 확인하기 위해 arr[i]를 제외한 arr2리스트를 새로 만들었다.
2) while문으로 low, high 투포인터를 이용하여 투포인터의 합이 arr[i]가 나왔다면 cnt+=1, 더 작으면 low += 1, 더 크다면 high -= 1


코드

import sys
input = sys.stdin.readline
n = int(input())
arr = list(map(int, input().split()))
arr.sort()
cnt = 0
# arr[i]가 좋은 수인지 투포인터로 확인
for i in range(n):
    arr2 = arr[:i]+arr[i+1:] # arr[i]를 제외한 리스트 생성
    low, high = 0, len(arr2)-1

    while low < high:
        sum = arr2[low]+arr2[high]
        if sum < arr[i]:
            low += 1
        elif sum > arr[i]:
            high -= 1
        else:
            cnt += 1
            break
print(cnt)

0개의 댓글