https://school.programmers.co.kr/learn/courses/30/lessons/148653
#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;
}
'Coding Test > Programmers' 카테고리의 다른 글
[Programmers] Lv 2. 줄 서는 방법 (0) | 2023.11.16 |
---|---|
[Programmers] (2021 Dev-Matching: 웹 백엔드 개발자(상반기)) Lv 2. 행렬 테두리 회전하기 (0) | 2023.11.14 |
[Programmers] Lv 2. 호텔 대실 (1) | 2023.10.11 |
[Programmers] (2020 카카오 인턴십) Lv 2. 수식 최대화 (0) | 2023.10.10 |
[Programmers] (완전탐색) Lv 2. 전력망을 둘로 나누기 (0) | 2023.08.08 |
댓글