[코테] 99클럽 코테 스터디 4일차 TIL (BOJ 1253)

Harry Lee·2025년 1월 16일
0
post-thumbnail

문제

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

풀이

입력받은 배열을 정렬한 후 투포인터를 사용하여 start는 시작 인덱스, end는 마지막 인덱스로 설정한 뒤, 두 포인터를 조절하며 좋은 수를 탐색하였습니다. 여기서 주의할 점은 어떤 수가 다른 두 수의 합으로 나타낼 수 있어야 한다 는 조건 때문에 자기 자신을 포함해서는 안 된다는 것입니다.
이를 해결하기 위해 자기 자신을 제외한 나머지 수들로 구성된 임시 배열을 만들어 탐색을 진행했습니다.

반례

11
0 1 2 3 4 5 6 7 8 9 10

답: 8
n = int(input())
a = list(map(int, input().split()))
a.sort()

cnt = 0

for i in range(n):
    tmp = a[:i] + a[i + 1:]
    start = 0
    end = len(tmp) - 1

    while start < end:
        total = tmp[start] + tmp[end]

        if total == a[i]:
            cnt += 1
            break
        elif total < a[i]:
            start += 1
        else:
            end -= 1

print(cnt)

TIL

문제를 꼼꼼히 읽지 않아 중요한 부분을 놓쳐서 애를 먹었지만 반례를 찾은 후 어떤 부분에서 틀린건지 확실히 알 수 있었다.

profile
A keyboard player

0개의 댓글