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

반갑습니다.
문제가 점점 어려워져서
1일 1 글이 아니라 4 글이 되어가고 있습니다.
큰일입니다.
제가 이렇게 나약했나요.
이걸 다 이해하고 습득하는것도 백만 년 걸릴지도 모르겠군요.
이래저래 걱정이 많습니다.
오늘은 벡터의 친구들을 상세하게 알아볼 계획입니다.


이 문제는 사실 이론상? 쉽다.
그냥 왼쪽에 있는거 하나만 옮기면 되는데..
내가 생각했던 문제는 뭐냐..
한 칸 옮기면..
애들이 하나씩 미뤄지지 않을까? 였다.
for문을 써서 한칸씩 이동시켜야 하나..?
근데 그렇게 비효율적일까?
아닌가 20개라서 그렇게 비효율적이진 않을 거 같긴 하다.
그래도 인지 씨에게 물어봤다.
물어본 건
최적의 효율적 풀이였다.
두 가지라고 하며 하나씩 풀어보자고 했다.
Vector과 친구들
맨 앞을 확인하는 친구
v.front()
맨 앞에 누가 있는지 알려줍니다.
맨 뒤를 확인하는 친구
v.back()
맨 뒤에 누가 있는지 알려줍니다.
맨 뒤에 글자를 붙이기
v.push_back(값)
늘 하던 거 push_ back 말 그대로 뒤에 붙인다.
맨 뒤에 글자를 빼기
v.pop_back()
약간 스택 이런 친구처럼 pop를 쓴다.
맨 앞에 글자를 붙이기
v.insert(v.begin(), 값)
insert를 쓰고 맨 앞에 라고 표시 후 값을 적어준다.
맨 앞에 글자를 빼기
v.erase(v.begin)
erase로 쓰며 맨 앞을 지운다는 뜻
스택이랑 약간 비슷해서
외우는데 큰 무리는 없을 거 같다.
벡터의 도구들을 알아봤다.

짜잔! 완성
그럼 이제 인지 씨가 말한 2번은 뭘까
최적화 알고리즘이 있다고 했다.
그 친구 이름은
rotate
이 친구를 쓰려면
늘 그랬듯
<algorithm>을 추가해줘야 한다.
rotate는 3가지 정보가 필요하다.
rotate(시작점, 누가 첫 번째에 올건지, 끝점);
자, left부터 보자
두 번째에 있던 애가 첫 번째로 오게 된다.
그래서
시작점은 begin()
1등 자리는 begin() + 1
끝점은 end()
rotate(numbers.begin(), numbers.begin() + 1, numbers.end());
그럼 right의 경우는 뭘까?
맨 뒤에 있는 애가 첫 번째로 오게 된다.
시작점
시작점은 begin()
1등 자리는 end() - 1
끝점은 end()
rotate(numbers.begin(), numbers.end() - 1, numbers.end());
그리고 좋은 친구 하나 더 있다고 알려주었다.
rbegin()이라고 컴퓨터가 친히 거꾸로 보기 시작한다.
rotate(numbers.rbegin(), numbers.rbegin() + 1, numbers.rend());
이렇게 해주면 아까식이랑 같아서 좀 편하다는 거?
두 칸씩 늘리고 싶으면 +2 세 칸이면 +3 이렇게 해준다.


답은 이렇게 나온다.
어려운 문제를 풀었다.
rotate라는 친구도 배웠고
vector의 새로운 친구들도 많이 배웠다.
배울 게 너무 많다.
'프로그래머스를 풀어보아요! > C++' 카테고리의 다른 글
| 코딩테스트 입문 - 소인수분해 ( while ) (0) | 2026.05.05 |
|---|---|
| 코딩테스트 입문 - 합성수 찾기 ( 이중 포문, 에라토스테네스의 체 ) (0) | 2026.05.04 |
| 코딩테스트 입문 - 공 던지기 ( 원형벡터, 시계 & 반시계 ) (0) | 2026.05.01 |
| 코딩테스트 입문 - 2차원으로 만들기 ( vector, clear ) (0) | 2026.05.01 |
| 코딩테스트 입문 - 구슬을 나누는 경우의 수 ( 조합, 재귀 ) (0) | 2026.04.30 |
