Algorithm/백준

[백준 알고리즘] 1253번: 좋다 (Python)

에릭 Kim 2023. 10. 23. 18:24
반응형

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

 

1253번: 좋다

첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수)

www.acmicpc.net

 

소스코드

 

 

풀이

★ 문제를 처음 읽었을 때, 투 포인터를 사용하여 풀 수 있는 문제라는 것을 알고 시도하였습니다 ! 하지만 67%에서 무려 5번의 실패를 겪고 정답을 맞출 수 있었는데요, 가장 중요한 부분은 문제를 꼼꼼히 읽는 것이라고 생각합니다. 

 

★ 문제 첫 줄을 보면 n개의 수 중 어떤 수가 다른 수 두개의 합으로 나타낼 수 있다면 그 수를 "좋다"고 합니다. 여기서 주목해야 할 부분은 어떤 수를 "다른 두 수"로 만들어야 한다는 것입니다. 즉, 자기 자신을 제외한 나머지 두 수가 됩니다.

 

★ 자기 자신을 제외한 두 수이기 때문에 반복문을 돌 때 배열을 새로 만들어줘야 합니다. 또한 left와 right의 시작점 또한 0, n-1이 아닌 0, 새로 만든 배열 -1이 됩니다

 

★ 이후 투포인터로 하나씩 탐색하며 조건을 만족하는 수를 찾아가면 됩니다 :) 

반응형