[백준 1253 파이썬] 좋다 (골드 4, 투 포인터)

배코딩·2025년 2월 12일
0

PS(백준)

목록 보기
126/131

소스 코드

import sys
input = sys.stdin.readline

N = int(input().rstrip())
nums = sorted([*map(int, input().rstrip().split())])
result = 0

for i in range(N):
    num = nums[i]
    nums_partial = nums[:i] + nums[i + 1:]
    
    left_idx = 0
    right_idx = len(nums_partial) - 1

    while left_idx < right_idx:
        sum_two_num = nums_partial[left_idx] + nums_partial[right_idx]
        if sum_two_num == num:
            result += 1
            break
        elif sum_two_num < num:
            left_idx += 1
        else:
            right_idx -= 1

print(result)

풀이 요약

  1. 수를 오름차순 정렬 후, 모든 수에 대해 다음을 수행한다.

    -> 현재 수를 제외한 partial 리스트를 따로 만들고, 그 리스트를 투 포인터 탐색하여 합이 현재 수가 되는 쌍을 찾아낸다.


어려웠던 점, 배운 점

이분 탐색 유형으로 검색해서 나온 문제였는데, 알고보니 투 포인터 문제였다.

근데 이전에 이런 비슷한 경우가 있었는데 그 때는 다른 방법을 잘 알아내고 풀어냈는데, 이번에는 그러지 못했다. 투 포인터 숙련도가 낮아서 시야가 트이지 않았던건가 싶다.

이걸 통해 유형 파악에 대해 시야가 넓어야하는게 얼마나 중요한건지 알게 됐고, 투 포인터 숙련도가 좀 낮다는 걸 깨달았다.

profile
알고리즘, 풀스택, 앱 개발, 각종 프로젝트 내용 정리 (https://github.com/minsu-cnu)

0개의 댓글

관련 채용 정보