상세 컨텐츠

본문 제목

[TIL#15-2] Study] 코딩 테스트 3

개인 공부/코딩 테스트

by DK9 2023. 11. 3. 20:32

본문

1. 개미군단

    public int solution(int hp) {
        int answer = 0;                             // 개미들의 공격 횟수

        while (hp != 0) {                           // hp가 남아있을 때
            if (hp - 5 >= 0) {                      // 장군 개미의 공격
                hp -= 5;
                answer += 1;
            } else if (hp - 3 >= 0) {               // 병정 개미의 공격
                hp -= 3;
                answer += 1;
            } else {                                // 일 개미의 공격
                hp -= 1;
                answer += 1;
            }
        }
        return answer;
    }
    //        return hp / 5 + (hp % 5 / 3) + hp % 5 % 3;        맘에 드는 코드

 

가장 적은 공격으로 hp를 0으로 만들어야한다.

 

처음에 if (hp % 5 > 5) 로 했었다. 그러면 문제가 hp가 6~9인 상황에서 한번 더 공격할 수 있음에도 다음 개미에게 공격을 양보하게 되어 최소 공격 횟수가 도출되지 않았다.

2. 양꼬치

    public int solution(int n, int k) {
        int service = 0;                            // 음료수 서비스 받은 횟수
        int a = n;                                  // 주문한 양꼬치 개수
        
        while ( a - 10 >= 0) {                      // 양꼬치 주문 10번당 음료 서비스 1번                      
            a -= 10;
            service += 1;
        }
        int lamb = n * 12000;                       // 총 양꼬치 가격
        int drink = (k - service) * 2000;           // 총 음료수 가격

        return lamb + drink;                        // 총 가격
    }
//        return n * 12000 + k * 2000 - (n / 10 * 2000);        맘에 드는 코드

 

양꼬치와 음료수를 주문하는데 양꼬치 주문 10번 당 음료수 1개를 서비스로 준다. 이때 총 가격을 구하는 문제.

 

총평

맘에 드는 코드들을 보면 문제의 본질적인 부분을 잘 파악하여 짧고 간결하게 해결했다. 코드를 구현함에 있어 문제의 본질을 좀 더 확실히 고민한 후에 코딩을 해야겠다고 생각했다.

다시 생각해보니 저 사람들이 그냥 수학을 잘하는거 아닌가?

관련글 더보기