[c++] 코딩테스트 고득점 KIT -> 스택/큐 -> 기능개발

선파·2022년 5월 11일
0

programmers

목록 보기
1/1
post-thumbnail

코딩 문제 사이트 중에 백준 vs 프로그래머스를 고민하다
대기업들은 대부분 프로그래머스를 통해 코딩 테스트를 진행한다고 하여
프로그래머스를 사용하기로 했다.

https://programmers.co.kr/learn/courses/30/parts/12081
프로그래머스 기능개발 문제 링크

문제 설명


사실 문제 푸는데 2시간이나 걸렸다. (2레벨 문제도 힘든데 4~5레벨은 괴물들이 푸는 것일까?)

코드마다 주석이 있기에 별도의 설명은 생략하겠다.

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> progresses, vector<int> speeds) { // 배포순서, 개발속도
    vector<int> answer; // 배포마다 몇개의 기능이 추가되는지 push

    while (1)
    {
        int key = 0;
        int max_size = progresses.size();
        int *arr = new int [max_size](); // progresses + speeds 저장 리스트 

        for (int i = 0; i < max_size; i++) // 1일(i)이 지날때마다 리스트 데이터 값 증가
            arr[i] = progresses[i];

        while (1)
        {
            for (int i = 0; i < max_size; i++) // 1일(i)이 지날때마다 리스트 데이터 값 증가
                arr[i] += speeds[i];

            if (arr[0] >= 100) // 첫번째 인덱스가 100 이상이면 push
            {
                int count = 0;
                for (int i = 0; i < max_size; i++)
                {
                    if (arr[i] >= 100) // 진도율 100이상이 아닐때까지 루프
                    {
                        count++;
                        continue;
                    }
                    else
                        break;
                }
                answer.push_back(count);

                progresses.erase(progresses.begin(), progresses.begin() + count);
                speeds.erase(speeds.begin(), speeds.begin() + count);
                

                if (progresses.size() == 0)
                    return answer;
                key = 1;
                break;
            }
            if (key == 1)
                break;
        }
        delete[] arr;
    }
}

타인이 짠 코드를 보니 10줄 정도의 for문으로 해결한 사람도 존재했다. (그것도 12명이나..)
나는 왜 저렇게 못짰는지 반성하며 다음 문제를 풀어보겠다.

profile
주니어 데이터 엔지니어 (D.E.)

0개의 댓글