본문 바로가기
Coding Test/Programmers

[Programmers] (그리디 or 완전탐색) Lv 2. 마법의 엘리베이터

by song.ift 2023. 11. 10.

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

#include <string>
#include <vector>
#include <algorithm>
#include <iostream>

using namespace std;

int solution(int storey) {
    int answer = 0;
    vector<int> v;

    auto str = to_string(storey);
    for (const auto& element : str)
        v.push_back(element - '0');

    int order = v.size() - 1;
    while (order)
    {
        int type = 0;

        vector<int> v_case =
        {
            v[order] + v[order - 1],
            v[order] + 10 - (v[order - 1] + 1),
            10 - v[order] + v[order - 1] + 1,
            10 - v[order] + 10 - (v[order - 1] + 1)
        };

        const auto& iter = min_element(v_case.begin(), v_case.end());
        if (*iter == v_case[0] || *iter == v_case[1]) answer += v[order];
        else answer += 10 - v[order];
               
        if (*iter == v_case[2] || *iter == v_case[3])
        {
            int temp = order - 1;
            do
            {
                ++v[temp];
                if (v[temp] >= 10)
                {
                    v[temp] = 0;
                    --temp;
                    
                    if (temp < 0) ++answer;
                }
                else break;
            } while (temp >= 0);
        }

        --order;
    }

    answer += min(10 - v[0] + 1, v[0]);
    
    return answer;
}

GitHub : https://github.com/developeSHG/Algorithm-Baekjoon_Programmers/blob/91b22a1477741ebec3ee454cb6bc4b8eb6733758/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4/2/148653.%E2%80%85%EB%A7%88%EB%B2%95%EC%9D%98%E2%80%85%EC%97%98%EB%A6%AC%EB%B2%A0%EC%9D%B4%ED%84%B0/%EB%A7%88%EB%B2%95%EC%9D%98%E2%80%85%EC%97%98%EB%A6%AC%EB%B2%A0%EC%9D%B4%ED%84%B0.cpp

 

GitHub - developeSHG/Algorithm-Baekjoon_Programmers: 백준 and 프로그래머스 소스코드

백준 and 프로그래머스 소스코드. Contribute to developeSHG/Algorithm-Baekjoon_Programmers development by creating an account on GitHub.

github.com

 

댓글