문제 : https://school.programmers.co.kr/learn/courses/30/lessons/148653#qna
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 풀이
맨 뒷자리 숫자부터 가장 빠르게 0 or 10이 되는 알고리즘을 적용하면 된다.
- n < 5 인 경우, 0으로 만들기 위해 n칸 내려가는게 빠름
- n > 5인 경우, 10으로 만들기 위해 10-n칸 올라가는게 빠름
- n = 5인 경우, 0으로 내려가든 10으로 올라가든 5칸으로 동일하지만, 앞자리 숫자가 5보다 크거나 같으면 올라가는게, 아니면 내려가는게 앞자리 숫자 처리하는데 유리함
작성한 코드
class Solution {
public int solution(int storey) {
int answer = 0;
while (storey != 0) {
int n = storey % 10;
storey /= 10;
if (n == 0) continue;
if (n < 5) {
answer += n;
}
else if (n > 5) {
answer += 10 - n;
storey ++;
}
else { // n == 5인 경우
answer += n;
if (storey % 10 >= 5) storey ++;
}
}
return answer;
}
}
'자료구조 & 알고리즘 > 문제 풀이 (프로그래머스)' 카테고리의 다른 글
| 멀쩡한 사각형 (최대공약수) (0) | 2026.07.20 |
|---|---|
| 숫자 카드 나누기 (최대공약수) (0) | 2026.07.15 |
| 점 찍기 (0) | 2026.07.10 |
| 호텔 대실 (그리디 알고리즘) (0) | 2026.07.09 |
| 배달 (그래프, DFS) (0) | 2026.07.08 |
