Skip to content

기능개발 #66

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 30, 2022
Merged

기능개발 #66

merged 1 commit into from
Jun 30, 2022

Conversation

NamJwong
Copy link
Owner

문제

풀이 후기

큐를 이용해야 하는 문제였는데, 엉뚱하게 스택으로 풀려고 하다가 삽질했다.
문제의 '먼저 배포되어야 하는 순서대로' 이런 부분에서 FIFO라는 것을 캐치했어야 했다.

큐로 풀어야 한다는 것을 깨닫고 나서는 꽤 수월하게 풀었는데, 더 좋은 코드가 있을지 궁금하다.

다른 사람의 풀이와 비교

큐를 이용한 풀이 방식은 어쩔 수 없이 O(n^2)인데, 큐를 이용하지 않고 O(n)으로 푼 풀이가 좋아요 1등이길래 가져와봤다.
그 외는 다 큐를 이용한 듯하며, 이 풀이 방식 중에서는 내 코드가 제일 마음에 든다.

좋아요 1등 풀이

function solution(progresses, speeds) {
    let answer = [0];
    let days = progresses.map((progress, index) => Math.ceil((100 - progress) / speeds[index]));
    let maxDay = days[0];

    for(let i = 0, j = 0; i< days.length; i++){
        if(days[i] <= maxDay) {
            answer[j] += 1;
        } else {
            maxDay = days[i];
            answer[++j] = 1;
        }
    }

    return answer;
}
  • 굳이 반복문을 통해 매일매일 지나는 것처럼 시뮬레이션 해보지 않고도 어떤 작업이 먼저 끝나게 될지 알 수 있었구나. (days 만드는 부분 참고)
  • 대박.. 진짜 간단하면서도 기발한 방식으로 깔끔하게 잘 풀었다. 이 문제가 아예 스택/큐 분류로 되어 있어 나 포함 다들 그 안에 갇혀있었던 것 같다. 역시 알고리즘 분류는 모르는 채로 푸는 게 좋다..

@NamJwong NamJwong self-assigned this Jun 30, 2022
@NamJwong NamJwong merged commit e1514b6 into main Jun 30, 2022
@NamJwong NamJwong deleted the algorithm/#59 branch June 30, 2022 13:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

기능개발
1 participant