Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 드림핵
- web-view
- url 랜더링
- expo
- 블로그 뉴비
- 고고학 최고의 발견
- react-router-dom
- 꿀팁 환영
- apk 빌드
- 코딩테스트
- Dreamhack
- 부산 맛집 OPEN API
- redux state값 유지
- php-1
- 오블완
- python
- 개발
- 창업 300
- 훈수 가능
- API 활용 신청
- 새로고침
- 사업계획서
- level3
- 티스토리챌린지
- React
- 프로그래머스
- 보안
- 공공데이터 포털
- Redux
Archives
- Today
- Total
1223v
[BOJ] Python 백준 좋다(1253) 본문
https://www.acmicpc.net/problem/1253
투포인터 문제이다.
배열에 있는 모든 수를 판단해야 하므로, 모든 수를 for문을 돈다.
이후, 두포인터로 시작점과 끝점을 잡는다.
선택된 수의 값을 기준으로 while문을 돌며 투포인터로 해당되는 값을 찾는다
찾는중에 만약 target의 index와 겹치지 않는다면 count 값을 늘려주고,
만약 둘중 하나라도 target의 index와 start, end중 하나가 겹친다면 ( start, end 중 겹친)값을 늘려준다.
import sys
input = sys.stdin.readline
N = int(input())
s = sorted(list(map(int,input().split())))
count = 0
for i in range(N):
start = 0
end = N-1
target = s[i]
while start < end:
if s[start] + s[end] < target:
start += 1
elif s[start] + s[end] > target:
end -= 1
else:
if start != i and end != i: # 서로 다 다른수여야 좋은수
count += 1
break
elif start == i:
start += 1
elif end == i:
end -= 1
print(count)
회고,
서로 다른 수로 target을 만들어야 된다는 점을 인지하지 못하고, 같은 index여도 가능 여부로 두었었다.
조건을 하나도 빠짐없이 잘 정리해서 적용해야겠다.
728x90
'PS' 카테고리의 다른 글
[BOJ] Python 백준 특정한 최단 경로(17270) (0) | 2025.01.20 |
---|---|
[BOJ] Python 백준 연예인은 힘들어(17270) (0) | 2025.01.20 |
[BOJ] Python 백준 네트워크 복구(2211) (0) | 2025.01.16 |
[Programmers] Python 프로그래머스 가사 검색(60060) (1) | 2025.01.14 |
[BOJ] Python 백준 타임머신(11657) (0) | 2025.01.13 |