728x90
반응형
※ 문제링크
채점 현황
www.acmicpc.net
해당 문제는 투 포인터를 활용하여 해결할 수 있는 문제였다. 사실 반복문만으로도 결과는 출력할 수 있지만 당연하게도 시간초과가 되었다. 핵심은 정렬 후 양쪽 끝에서부터 하나씩 쌍을 만들어 값을 비교하는 것으로 포인터를 0과 n-1로 주어 숫자쌍의 합에 따라 포인터를 이동시키면 된다. 자세한 문제풀이방법과 코드는 아래와 같다.
1. 입력받은 값들로 변수와 숫자리스트를 생성하여 저장한다.
2. 포인터들로 숫자쌍을 생성하여 숫자쌍의 합이 x보다 크면, 우측 포인터를 -1하고, x보다 작으면 좌측 포인터를 +1하여 비교하다가 좌측과 우측포인터의 차이가 1이면 조건문을 종료한다.
3. 조건문 종료 후 결과값을 출력한다.
n = int(input())
numbers = list(map(int, input().split()))
x = int(input())
numbers.sort()
cnt = 0
cp1 = 0
cp2 = n-1
cnt = 0
while cp1 < cp2:
cp_value = sum([numbers[cp1], numbers[cp2]])
if cp_value == x:
cnt += 1
if cp_value < x:
cp1 += 1
if cp_value >= x:
cp2 -= 1
print(cnt)
P.S 개발자가 되기위해 공부중입니다. 잘못된 부분을 댓글로 남겨주시면 학습하는데 큰 도움이 될 거 같습니다.
728x90
반응형
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ] 1806번 부분합 / 사용언어 : 파이썬(python) (0) | 2022.02.27 |
---|---|
[BOJ] 2470번 두 용액 / 사용언어 : 파이썬(python) (0) | 2022.02.26 |
[BOJ] 4485번 녹색 옷 입은 애가 젤다지? / 사용언어 : 파이썬(python) (0) | 2022.02.22 |
[BOJ] 15686번 치킨배달 / 사용언어 : 파이썬(python) (0) | 2022.02.21 |
[BOJ] 11052번 카드 구매하기 / 사용언어 : 파이썬(python) (0) | 2022.02.20 |
댓글