Notice
Recent Posts
Recent Comments
Link
마이의 개발 블로그
[프로그래머스] 마법의 엘리베이터 (Java) 본문
반응형
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
예외사항이 너무 많은데 테스트케이스 오픈이 안 되어있어 다른 사람들의 힌트를 참고하여 케이스를 하나씩 때려잡아야 했던 문제이다(코드참조 x). 그래서 그런지 5점이나 주긴 했는데 풀어놓고도 딱히 다른 문제풀이에 도움이 될 것 같진 않다는 인상을 많이 받았다.
- 주어진 숫자 storey를 오른쪽에서부터 한 자리씩 탐색함
- 자릿수가 0~4일 때는 빼서 내림하는게 유리함 (첫 번째 if문)
- 자릿수가 6~9일 때는 더해서 올림하는게 유리함 (두 번째 if문)
- 자릿수가 5일 때
1) 직전 자릿수(현재의 오른쪽 자릿수)가 6 이상일 경우 그 자리(6이상인 자리)에서 올림해서 현재 자릿수를 증가시키는게 유리함 (prev >= 6)
2) 직전 자릿수가 없는 경우(첫 번째 자리인 경우) 그 다음 자릿수(현재의 왼쪽 자릿수)가 5보다 큰 경우 올림하는 게 유리함 (prev == -1)
Note
- 중복을 제거하여 코드 길이를 짧게 작성할 수도 있었지만 내가 작성한 로직의 가시성을 고려하여 이대로 제출했다.
class Solution {
public int solution(int storey) {
int answer = 0;
int prev = -1;
while(storey > 0){
int digit = storey % 10;
if(digit < 5){
answer += digit;
}else if(digit > 5){
answer += 10 - digit;
storey += digit;
}else if(digit == 5){
answer += digit;
if(prev >= 6){
storey++;
}
if(prev == -1){
if((storey / 10) % 10 >= 5){
storey += digit;
}
}
}
storey /= 10;
prev = digit;
}
return answer;
}
}
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 카드 뭉치 (Java) (0) | 2023.02.18 |
---|---|
[프로그래머스] 큰 수 만들기 (Java) (0) | 2023.02.16 |
[프로그래머스] 소수 찾기 (Java) (0) | 2023.02.10 |
[프로그래머스] 가장 큰 수 (Java) (0) | 2023.02.08 |
[프로그래머스] 둘만의 암호 (Java) (0) | 2023.02.04 |
Comments