| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |
- C++
- 바킹독
- 유니티공부
- 백준 C++
- c#기본문법
- unity3d게임만들기
- 백준 구현문제
- 티스토리챌린지
- unity게임만들기
- 백준코딩테스트
- Unity
- 바킹독알고리즘
- 백준코테
- 리그오브레전드턴제게임
- c#코딩기초트레이닝
- solved class 2
- unity게임
- 유니티서바이벌게임만들기
- 백준 c++ 공부
- c#코테
- 유니티
- c++ 백준
- 유니티게임만들기
- 백준
- C#문법
- unity3dservival
- c#기초문법
- c#
- c++ solved.ac
- 오블완
- Today
- Total
나 개발자 진짜 되냐?
[ C++ ] 프로그래머스 - 삼총사 ( 3중포문, 투포인터 ) 본문

7월입니다!!
다들 7월 목표가 있으신가요?
제 목표는.. 음음
오픽 도전
그리고 IH달성입니다.!!
ㅎㅎㅋㅋ 오늘부터 조금씩 공부하려고요
일단 이 문제부터 풀고요!

나의 머릿속에는
한 마리를 딱 정해놓고 나머지 두 개를 찾는 방법을 생각했는데
구현 방법을 모르겠다.
..
그리고 길이가 13인점을 생각해서
그냥 모두 찾아보면 될 거 같아서
3중 포문으로 구현해 보기로 했다.

..
그런데..

..
왜지?
인지 씨를 찾았다.
자기 자신을 중복하는 문제가 생긴다고 했다.
그러네.. 한 칸씩 미루는 건 답이 아니구나..!!
내가 j를 1로 k를 2로 하드로 박아놔서 문제가 생겼다.
i는 0으로
j는 i + 1로, k는 j +1로 해줘야 한다.

그럼 이 답이 나오게 된다.
그럼 내가 원래 풀고 싶었던 방법은 안되는 걸까?
싶어서 물어봤다.
가능하다고는 했다.
정렬 + 투포인터로 풀기
1. 정렬을 해준다.
2. 맨 앞을 고정으로 한다
3. 나머지애들끼리 더해주며 계산해 나간다.
예를 들면
-5 -2 0 2 3
우리가 원하는 건 0인데
-5를 고정하면
-2 0 2 3 이 남는다
나머지애들을 계산해야 하는데
그것을 맨 끝과 맨 처음부터 시작하게 한다.
-2와 3을 시작해 보자
-5 -2 + 3 = -4다
0이 되어야 하는데 숫자가 더 작으니
숫자를 크게 하려면?
정렬을 해주었으니 오른쪽으로 갈수록 숫자가 커지기 때문에
숫자를 크게 하려면?
왼쪽값을 하나 다음칸으로 이동해야 한다.
-5 0 +3 = -2
여전히 작다. 그러면? 오른쪽으로 한 칸 더 이동!
-5 +2 +3 = 0
딱 맞다!
이렇게 하는 것이다.
1. 정렬하기

2. 첫 번째 친구로 고정 후, 왼쪽 오른쪽 지정해 주기

3. while문으로 숫자가 역으로 가지 않게 하기
-2 0 2 3인데
만약에 right보다 left가 작아진다면 뭔가 꼬이고 있다는 거겠죠?!
둘이 겹치는 일이 있으면 안 된다는 것..!!
그래서 while문은 ( left < right )로 해줘야 합니다.

그리고!
sum이 0 이면, 우리는 답을 찾았으니 answer ++해주고
추가적으로 더 있을 수 있으니 left와 right를 계산해줘야 합니다.
그리고 아까 위에 적어둔 거처럼 0보다 작으면.. 왼쪽 숫자가 작은 거니까
왼쪽을 다음칸으로 늘려줘야 합니다.

전체 식이다.
사실 범위가 작아서 다른 사람들 풀이 보니..
다들 3중 포문으로 풀었다.
시작 조건이 i +1
j+1인 것도 중요하고
중복 방지로 size()-2 , -1 해주는 것도 필요했다.
정렬 투포인터로 풀어도 봤다.
생각보다 어려운 듯? 쉬운 듯하다.
조합은 역시 어렵다..
'프로그래머스를 풀어보아요! > C++' 카테고리의 다른 글
| [ C++ ] 프로그래머스 - 노란불 신호등 ( lcm ) (0) | 2026.06.30 |
|---|---|
| [ C++ ] 프로그래머스 - 중요한 단어를 스포 방지 ( set, substr, find ) (0) | 2026.06.19 |
| 코딩테스트 입문 - 안전지대 ( 2차원 배열 탐색 ) (0) | 2026.05.29 |
| 코딩테스트 연습 - 기능 개발 ( ceil , 나눗셈 ) (1) | 2026.05.28 |
| 코딩테스트 입문 - 저주의 숫자 3 ( 숫자 쪼개기 ) (0) | 2026.05.27 |