♨️1561. 놀이 공원_마지막 -1 아이디어 ♨️

·2025년 6월 16일
0

백준 알고리즘

목록 보기
177/272

문제 풀이

1) 이분 탐색으로 특정 시간 확정하기
2) 구현 : 특정 시간으로 가지고 몇번째 놀이기구에 탈것이냐?
-> 2번 구하는 것이 어렵다...

문제 풀이 전략

  • 어떻게 풀어야 할지 몰라서 일단은 3번 입력값을 그리고 그림을 그려봄.
    -> 규칙성부터 찾아보자. 도무지 어떻게 할 방도가 없어서 해보자.

  • 0초에서부터 빈 기구에 타므로 +1 처리를 각각해야 함.

-> 8초가 나온다. 그렇다면 기준이 되는 것은 time 이다.

  • 특정한 값을 구하기 위해 어떻게 할 거이냐?
    : 일단 놀이 기구에 탑승하려는 사람이 굉장히 많다.
    -> 알수 없는 time을 구하기 위해 이분탐색을 사용하자.

: time은 범위는 1 ~ ??? 최대값은 어떻게 될까?
전체 인원수 * time (30) 으로 해자.

  • 최대값을 결정할때는 전체 숫자. * 단위별 최대값 으로 한다.

핵심 아이디어

  • 이전시간에 탑승 완료한 친구를 제외하면, targetT에서 새롭게 타게 되는 친구들의 번호를 알 수 있따.

: 우리가 구한 시간을 targetT라고 한다면 여기서 마지막 친구가 탑승한다.

  • targetT에 모든 기구를 순회하면서 탈수 있는 곳에 사람을 채워나갈 것이다.

  • -> 즉 targetT에 사람이 비워져 있는지를 알아야 한다.

  • 그렇다는 것은 targetT - 1 초에 탑승한 아이의 수를 빼면
    targetT 에 새롭게 탑승하는 친구를 찾을 수 있다.


주의사항

: long long 인자를 받아서 카운팅을 한다고 한다면
이때도 그냥 long long으로 하자.

  • 예제 3번을 했을때 몫이 8이 나와야 22가 나온다. 는 것을 예측하고 만든 코드

  • cnt를 long long 으로 할 때

  • cnt를 ing로 할 때... 값이 잘려서 그런지 제대로 나오지 않는다.

핵심

: 놓친부분.

  • 단순하게 몫나오는 것들 중 마지막에 반환하는 ?
    식으로 생각했다.

아이디어 : 1초전 상태에서의 기록부터 시작하면 나머지 존재하는 거를 증가할 수 있따.

  • 일단은 1,2,3,4,5 번을 전체 포함하면서 번호가 확실하게 기록되는 부분은 어디일까?
    : 7번까지이다.

  • 이후에 8번 카운팅할 때의 이 3개를 기록하면 된다.

  • 어떻게 구현할 것인가???

  • 최종적으로 구한 target - 1 값만큼을 모두 더해준다.
    그러면 19가 나올거고,
    target % v[i] == 0 일때 카운팅을 하면 된다.

profile
🔥🔥🔥

0개의 댓글