728x90
문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/148653
문제 풀이 방법
숫자를 분석해 풀어가는 문제이다. 물론 DFS로 풀 수 있다.
숫자가 5보다 작은 경우 그대로 횟수를 더해주고, 큰 경우는 위에 자리 숫자에 1을 더한 뒤 현제 자리에 10-(현제수)를 위치해준다.
그리고 현재 수가 5인 경우는 위에 수가 5보다 큰지 작은지를 파악해 준뒤 예외를 주어야 한다.
완성된 코드
const solution = (storey) => {
let cnt = 0;
let arr = [...storey.toString(10).split('').reverse().map(e => +e), 0];
arr.forEach((e, i) => {
if(e < 5 || (e === 5 && arr[i+1] < 5)) cnt += e;
else{
cnt += (10 - e);
arr[i+1] += 1;
}
})
return cnt;
}
728x90
'코딩 테스트 > 프로그래머스 코딩 테스트 연습' 카테고리의 다른 글
[JS] 2Level / Summer/Winter Coding(~2018) / 배달 (0) | 2023.11.06 |
---|---|
[JS] 2Level / 연습문제 / 줄 서는 방법 (0) | 2023.11.04 |
[JS] 2Level / 2020 카카오 인턴십 / 수식 최대화 (0) | 2023.10.31 |
[JS] 2Level / 완전탐색 / 전력망을 둘로 나누기 (0) | 2023.10.30 |
[JS] 1Level / 해시 / 폰켓몬 (0) | 2023.10.27 |