본문 바로가기

C++/CodingTest

[백준 1158 - 실버4] 요세푸스 문제.cpp

https://www.acmicpc.net/problem/1158 

 

 

1158번: 요세푸스 문제

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)

www.acmicpc.net

 

 

 

주어진 규칙대로 번호를 출력하는 문제.

간격 K만큼 해당 자리에 있는 사람을 제거(?)해야 한다.

 

circle은 자리를 의미하고,

0은 아직 제거되지 않음.

1은 제거된 것으로 두었다.

그리고, tmp는 간격 K를 계산하기 위해 만들어주었다.

단순하게 현재 위치 + K를 하기에는

사이사이에 이미 제거된 자리가 있을 수 있기 때문.

now는 내가 보고 있는 실제 자리라고 보면 될 것 같다.

 

그냥 시키는대로 구현해주어서 해결한 문제.

효율은 아주 나쁜 것 같다...


문제풀이를 시작한게 한 두달 전쯤이다.

이 문제도 초반에 풀었던 문제 중 하나인데,

예전 풀이를 보니 많이 발전했구나...싶다..

 

많이 모자란 풀이일지라도

수정할 계획은 없다.

이런 부족한 코드가 때론 누군가에게 자신감을 줄지도...

(새로운 풀이를 추가할 계획은 있음.)

'C++ > CodingTest' 카테고리의 다른 글

[백준 1568 - 브론즈 2] 새.cpp  (0) 2022.04.23
[백준 1526 - 브론즈 1] 가장 큰 금민수.cpp  (0) 2022.04.23
[백준 1094 - 실버5] 막대기.cpp  (0) 2022.04.23
[백준 10828] 스택.c  (0) 2022.04.23
[백준 10808] 알파벳 개수.c  (0) 2022.04.22