728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/148653?language=cpp
1. Logic
항상 +1돌 or -1돌을 사용하여 1의 자리를 0을 만든 후에 큰 숫자로 빼주는 방법이 최선의 방법이다.
부분문제가 3가지로 쪼개지는데
1. 1의 자리가 6이상인 수 (6~ 9)
2. 1의 자리가 5인 수 (5)
3. 1의 자리가 4이하인 수 (0~4)
1번의 경우에는 10을 만들어준 후 10을 만드는데 사용한 +1돌의 갯수를 계산해서 더해주고 10을 만들었기 때문에 10의 자리에 1을 더해준 후 1의 자리를 날려준다.
2번의 경우 애매한데 이때는 10의 자리의 숫자를 본 후 10의 자리가 5이상이라면 10을 만들어주고 4이하라면 0을 만들어 준 후 1의 자리를 날려준다.
3번의 경우 1의 자리를 0으로 만들어준 후 0을 만드는데 사용한 -1돌의 갯수를 계산해서 더해주고 1의 자리를 날려준다.
2. Code
#include <bits/stdc++.h>
using namespace std;
int solution(int storey) {
int answer = 0;
while (storey != 0) {
if(storey % 10 > 5) {
answer += (10 - storey % 10);
storey /= 10;
storey += 1;
}
else if(storey % 10 == 5) {
if((storey / 10) % 10 >= 5) {
answer += (10 - storey % 10);
storey /= 10;
storey += 1;
}
else {
answer += storey % 10;
storey /= 10;
}
}
else {
answer += storey % 10;
storey /= 10;
}
}
return answer;
}
3. Feedback
10을 만들어준 후 1을 날리고 그후 원래 10의 자리 1을 날린 후 새롭게 들어온 1의 자리에 +1을 안해줘서 푸는시간을 약간 잡아먹었다. 로직을 세울 때 조금 더 자세히 볼 필요가 있다
알고리즘 Solve 후 제가 생각한 Logic을 기록하는 개인 공부 블로그입니다.
내용 중 최적화가 가능한 부분등은 언제든지 댓글로 틀린 부분 및 피드백 주시면 공부 및 반영하겠습니다🧐
728x90
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[백준/Baekjoon] 2342 Dance Dance Revolution C++ :: Dynamic Programming (1) | 2024.02.04 |
---|---|
[프로그래머스/Programmers] Level1 가장 많이 받은 선물 C++ :: Implementation (0) | 2024.02.02 |
[프로그래머스/Programmers] Level 1 붕대감기 C++ :: Implementation (0) | 2023.12.13 |
[프로그래머스/Programmers] Level 3 숫자 게임 C++ :: Implementation (0) | 2023.10.03 |
[프로그래머스/Programmers] 점프와 순간 이동 Level.2 C++ (0) | 2023.07.28 |