티스토리 뷰

Python/BAEKJOON

python 1253번 좋다 (백준)

rofn123 2025. 2. 23. 00:48
n = int(input())
a = list(map(int, input().split()))
a.sort()
c = 0
d = 0
e = 0
while e<n:
    l=0
    r=n-1
    while l<r:
        if l==e: //자신
            l+=1 
        elif r==e: //자신
            r-=1
        else: //자신이 아닌 두 수의 합이
            c = a[l]+a[r] //두 수의 합
            if c==a[e]: //자신과 같다면
                d+=1
                break //다음 수 탐색하러 
            elif c>a[e]: //더 크다면 
                r-=1
            else: //더 작다면
                l+=1
    e+=1
print(d)

 

풀이 : 정렬, 두 포인터

 

1. n을 입력받고 n개의 정수들을 입력받고 정렬합니다.

2. 첫번째 수부터 자신이 아닌 다른 수 2개의 합으로 같은 값을 만들수 있는 지를 두 포인터로 확인해 봅니다.

 

주의) 자신이 아닌 다른수 2개의 합이므로, 입력받은 두개의 수로 자신과 같은 값을 만들었다 한들,

자신 + 다른수 = 자신 (ex : 5 + 0 = 5) 이런것은 조건에 위배되므로, 조건을 주어 걸러내야 합니다.

 

 

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

 

'Python > BAEKJOON' 카테고리의 다른 글

python 10825번 국영수 (백준)  (0) 2025.02.24
python 1758번 알바생 강호 (백준)  (0) 2025.02.24
python 2212번 센서 (백준)  (0) 2025.02.18
python 9024번 두 수의 합 (백준)  (0) 2025.02.18
python 1141번 접두사 (백준)  (0) 2025.02.17
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함