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

추억을 향수처럼
병에 담을 수 있다면 어떨까?
아무 때나 열어볼 수 있게.
레베카 뮤지컬을 보러 간 어느 날
정말 생각만 해오던 이 말이,
가끔 생각하던 이 문장이
레베카에서 나오는 명대사라는 것을 알았다.
그 뒤로 이 문장을 좋아한다.
과거의 추억과 따뜻함 그리고 행복함을 위해
나는 자주 갤러리에 가서
5년 전 사진과 대화들을 보고 또 보고 그런다.
누구에게나 잊고 싶지 않은 감정이 있듯...
그 감정을 향수처럼 담을 수 있다면
그때를 더욱더 기억하기 좋을 거 같다는 생각이 들었다.
그래서 나는 이 문장을 좋아한다.
사실,
오늘 그리고 내일이 가장 행복해야 하는데..
과거를 자꾸 너무 자주 열어보는 것도..
좋은 건 아닐 거 같다는 생각도 들었다.


보기에는 원형으로 풀면 좋을 거 같다고 생각은 드는데..? 원으로 어떻게 풀지..? 싶어서
인지 씨를 찾았다.
그리고 이건 던지는 번째이지
받은 친구가 아니라는 사실을 잊으면 안 된다.
이런 원형문제를 풀기 위해서 어떻게 해야 하냐고 물었더니
마법의 친구라며 소개해준 건..
%
인지 씨 말로는
어떤 숫자를 % 배열의 크기로 해주면 아무리 숫자가 커도
배열의 크기를 넘지 않고 뱅글뱅글 돌 수 있다고 한다.
근데 어떻게.. 나누기를 쓰라는 건지?!?
이해가 안 갔다.
더 어렵다고 힌트를 달라고 졸랐다.
인지 씨는 규칙을 생각해 보라고 했다.
첫 번째로 던지는 사람 = 0 번째
두 번째로 던지는 사람 = 0번째에서 2칸 갔으니 2번째
세 번째로 던지는 사람 = 2번째에서 2칸 갔으니 4번째..
이것을 규칙으로 하면
( 던지는 순서 - 1 ) = 던지는 사람
( 던지는 순서 - 1 ) * 2를 해준 것.
2칸이니까!
이러면 k번째 던지는 사람은
( k - 1 ) * 2
오케이.
이제 아까 위에서 활용하려는 %를 해보자
만약에 위에처럼 4번째여야 하는데..
방에 3명뿐이면? 안되니까
4 % 3 하면.. 1이 나오니까..?
인덱스 1인 답 2가 되게 되는 것..!!
그래서 답이

이렇게 한 줄로 충분히 만들어진다.
하지만!
이렇게 하면 답이 안 나온다.
왜냐면 우리는
인덱스만 구했기 때문!!!
( k -1 ) * 2를 할 때 우리는 0 번째의 위치부터 시작했다.
그래서 인덱스이기 때문에 값을 넣어줘야 한다.

진짜 답!!
인지 씨에게 이런 원형으로 푸는 문제에
치트키 같은 매직 없냐고 물었다.
%를 활용하며 풀면 좋다고 했다.
시계방향으로 돌 때
( 현재 위치 + 이동할 칸 수 ) % 전체 크기
우리는 현재 위치가 0부터 시작이었고
이동할 칸 수는
( k - 1) * 2였다.
내가 아까
던지는 번째가 중요하다고 했다.
받은 친구가 아니라는 사실을 잊으면 안 된다.
던지는 번째를 구할 땐 벡터[방번호]
받은 친구는 누구냐?? 순서는 누구냐?
구한 방번호 + 1
첫 번째 던지는 그 위치는 0이기 때문에
k-1이 맞다.
반시계방향으로 돌 때
( 현재 위치 - 이동할 칸 수 + 전체 크기 ) % 전체 크기
뒤로 가라 혹은 왼쪽으로 가세요! 할 때 쓰는 것으로
왜 전체크기를 또 더해줄까?
예를 들면
1에서 2칸 뒤로 가요 하면 -1인데
c++은 -1은.. 방이 없어..! 난 0부터 시작해! 하면서
에러를 낸다고 한다.
그래서 음수가 되는 것을 막기 위해 전체크기를 더해준다고 한다.

마냥 쉬운 문제는 아니었다.
하지만 치트키를 배웠으니
다음에도 활용하고 싶다.
그러고 싶다.
'프로그래머스를 풀어보아요! > C++' 카테고리의 다른 글
| 코딩테스트 입문 - 합성수 찾기 ( 이중 포문, 에라토스테네스의 체 ) (0) | 2026.05.04 |
|---|---|
| 코딩테스트 입문 - 공 던지기 ( vector 친구들, rotate ) (0) | 2026.05.01 |
| 코딩테스트 입문 - 2차원으로 만들기 ( vector, clear ) (0) | 2026.05.01 |
| 코딩테스트 입문 - 구슬을 나누는 경우의 수 ( 조합, 재귀 ) (0) | 2026.04.30 |
| 코딩테스트 입문 - 모스부호(1) ( stringstream, map ) (0) | 2026.04.30 |
