TIL (Today I Learned)

99클럽 코테 스터디 23일차 TIL + 오늘의 학습 키워드

남 희 2024. 8. 14. 02:08

☑️ 문제: 마법의 엘리베이터

https://school.programmers.co.kr/learn/courses/30/lessons/148653#

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

오늘의 키워드: 그리디

 

☑️ 설계 및 코드(Kotlin)

더보기

첫 설계

// 일의 자리 수부터, 다음을 실행.
// 1. 현재 자리수가 10 - N < 5이라면, 10 - N 값을 더하고, 그 다음 자릿수에 1을 더한다.
    // (1) 10 - N < 5: answer += ((10 - N) + 1)
    // (2) else: answer += N
// 2. 위 내용을 storey가 0이 될 때까지 반복한다.

 

첫 설계 문제점

10 - N == 5일 때는 상황이 다르다. 이 때는, 그 다음 자릿수의 값까지 고려해야 한다.

class Solution {
    fun solution(storey: Int): Int {
        var answer: Int = 0
        var floor = storey
        
        while (floor != 0) {
            val N = floor % 10

            if (10 - N < 5) {
                answer += (10 - N)
                floor += 10
            } else if ((10 - N == 5) && ((floor / 10) % 10 >= 5)) {
                answer += (10 - N)
                floor += 10
            } else {
                answer += N
            }
            
            floor /= 10
        }
        
        return answer
    }
}