기능 개발 / queue 사용

2025. 2. 18. 10:36·공부/Code Cata

https://school.programmers.co.kr/learn/courses/30/lessons/42586

 

처음에 이 문제를 접했을 때, queue 자료구조에 각 progress마다 100%까지 몇 일이 소요되는지를 저장해놓고
FIFO 특성을 사용해서 앞의 소요일을 기준 값으로 뒤의 소요일을 비교했을 때, 작거나 같다면 같이 배포가 가능함으로 cnt를 증가시키고, 만약 뒤의 소요일이 크다면 answer 배열에 값을 추가한 뒤 기준 값을 교체하는 방식으로 문제를 해결해야겠다고 생각했다.

 

✅ queue 사용한 구현코드

#include <string>
#include <vector>
#include <queue>

using namespace std;

vector<int> solution(vector<int> progresses, vector<int> speeds)
{
    // progresses 요소 마다 몇 일이 걸리는지 저장
    queue<int> q;
    for (int i = 0; i < progresses.size(); ++i)
    {
        int tar = 100 - progresses[i];
        if (tar % speeds[i] != 0) q.push(tar / speeds[i] + 1);
        else q.push(tar / speeds[i]);
    }
    
    // 앞의 기능 기준으로 뒤의 배포 일이 작으면 cnt 증가
    // 뒤의 배포일이 크면 현재 cnt를 answer에 저장
    vector<int> answer;
    int cnt = 1;
    int cur = q.front();
    q.pop();
    while (!q.empty())
    {
        int next = q.front();
        if (cur >= next)
        {
            cnt++;
            q.pop();
        }
        else
        {
            answer.push_back(cnt);
            cur = next;
			cnt = 1;    
            q.pop();
        }
    }
	if (q.empty()) answer.push_back(cnt);

    return answer;
}

 

'공부 > Code Cata' 카테고리의 다른 글

피로도 / 브루트 포스 기법(순열)  (1) 2025.03.11
프로세스 / deque 활용  (0) 2025.03.10
의상 / 곱의 법칙(조합론)  (0) 2025.02.17
할인 행사  (0) 2025.02.13
N x N 배열 자르기  (0) 2025.02.11
'공부/Code Cata' 카테고리의 다른 글
  • 피로도 / 브루트 포스 기법(순열)
  • 프로세스 / deque 활용
  • 의상 / 곱의 법칙(조합론)
  • 할인 행사
동그래님
동그래님
  • 동그래님
    개발자 동그래
    동그래님
  • 전체
    오늘
    어제
    • 분류 전체보기 (210)
      • 공부 (51)
        • Code Cata (50)
      • 내배캠 (151)
        • TIL (50)
        • C++ (37)
        • Unreal Engine (48)
        • GAS(Gameplay Ability System.. (16)
      • Project (7)
        • Gunfire Paragon (5)
        • Arena Fighters (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    동그래님
    기능 개발 / queue 사용
    상단으로

    티스토리툴바