[백준] 1253번 좋다 (파이썬)

dongEon·2023년 4월 10일
0

난이도 : GOLD IV

문제링크 : https://www.acmicpc.net/problem/1253

문제해결 아이디어

  • 투포인터를 활용한문제.
  • 숫자리스트를 순회하면서 해당 숫자를 제외한 숫자리스트를 생성하고 생성한 숫자리스트의 첫번째인덱스와 마지막 인덱스부터 시작해서 순회한다.
  • 두숫자의 합이 해당 숫자보다 작다면 첫번째 인덱스 => 두번째 인덱스로 변경
  • 두숫자의 합이 해당 숫자보다 크다면 마지막 인덱스 => 마지막 -1 인덱스로 변경 하는 방식으로 진행한다.

소스코드

import sys

input = sys.stdin.readline

n = int(input())

numbers = list(map(int, input().split()))

numbers.sort()

cnt = 0

for i in range(n):
    tmp = numbers[:i] + numbers[i+1:]
    s = 0
    e = len(tmp)-1
    while s < e:
        result = tmp[s] + tmp[e]
        if result == numbers[i]:
            cnt += 1
            break
        
        if result < numbers[i]:
            s += 1

        else:            
            e -= 1
            
print(cnt)
profile
개발 중에 마주한 문제와 해결 과정, 새롭게 배운 지식, 그리고 알고리즘 문제 해결에 대한 다양한 인사이트를 공유하는 기술 블로그입니다

0개의 댓글