코린이의 소소한 공부노트

[LeetCode/Easy] 2739. Total Distance Traveled 본문

코딩테스트 풀이/JAVA

[LeetCode/Easy] 2739. Total Distance Traveled

무지맘 2023. 6. 30. 23:32

1. Input

1) int mainTank

- 트럭이 달리면서 소비하는 연료를 담은 탱크

2) int additionalTank

- 여분 탱크로, 트럭이 달리면서 직접적으로 해당 연료를 소비할 수는 없다.

 

2. Output

1) 다음과 같이 계산했을 때 트럭이 달릴 수 있는 최대 거리를 반환

- 트럭은 연료 1리터로 10km를 갈 수 있다.

- addtionalTank에 연료가 있는 한, mainTank의 연료 5리터를 소모할 때마다 addtionalTank의 연료 1리터가 mainTank로 자동 보충 된다.

 

3. Constraint

1) 1 <= mainTank, additionalTank <= 100

 

4. Example

Input: mainTank = 5, additionalTank = 10 -> Output: 60

설명:

- mainTank5리터를 쓴다.

- addtionalTank에서 mainTank1리터가 보충된다.

- mainTank1리터를 쓴다.

- 6리터를 썼으므로 6*10=60km까지 이동 가능하다.

 

5. Code

1) 첫 코드

class Solution {
    public int distanceTraveled(int mainTank, int additionalTank) {
        int used = 0;
        while(mainTank>0){
            if(mainTank>=5){
                used += 5; mainTank -= 5;
                if(additionalTank>0){
                    additionalTank--; mainTank++;
                }
            }
            else{
                used += mainTank; break;
            }
        }
        return used*10;
    }
}

- 56%, 85%

 

2) 반복횟수를 줄여본 코드

class Solution {
    public int distanceTraveled(int mainTank, int additionalTank) {
        int used = 0;
        while(mainTank>=5){
            int x = mainTank/5;
            used += x*5;
            mainTank %= 5;
            if(additionalTank>=x){
                additionalTank -= x;
                mainTank += x;
            } else if(0<additionalTank){
                mainTank += additionalTank;
                additionalTank = 0;
            }
        }
        return (used+mainTank)*10;
    }
}

- 100%, 74%