[Programmers/코딩테스트 연습] 피자 Java

2022. 11. 25. 17:48IT/Programmers

728x90
반응형

피자 나눠먹기 1 (java)

class Solution {
    public int solution(int n) {
        int answer = 0;
         
        if (n%7 != 0) {
            answer = ((int)n/7) +1;
        } else {
            answer = ((int)n/7);
        }
        return answer;
    }
}

이게 진짜 바보같은 코드인게,

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        answer = (n%7 != 0) ? ((int)n/7) +1 : ((int)n/7);
        return answer;
    }
}

? : 이걸 잊고 있었다ㅠㅠㅠ

그런데 이럴 때 짧은 코드가 효율적인 걸까, 분석하기 좋은 코드가 좋은 코드인걸까?

 

이건 쉬웠으니까 하나 더,

 

 

피자 나눠먹기 2 (java)

class Solution {
    public int solution(int n) {
        int answer = 0;
        
        for (int i = 1; i <= 100; i++) {
            if((n*i)%6 == 0) {
                answer = (n*i)/6;
                break;
            }
        }
        return answer;
    }
}

나도 최소 공배수 구하는 걸 생각했는데, 이게 더 간단한 것 같아서..

근데 재귀함수 다시 보기는 해야겠다.

1) answer = n과 6의 최소공배수 / 6

2) 최소공배수 : n * 6 / (n과 6의 최대공약수)

3) 최대공약수 : 유클리드 호제법*

 

*(num1 > num2)

num1 % num2 = R (if R == 0, then num1 is gcd(num1, num2)

num2 % R = R1 (if R1 == 0, then R is gcd(num1, num2)

```

 

피자 나눠먹기 3 (Java)

 

class Solution {
    public int solution(int slice, int n) {
        int answer = 0;
        
        answer = n%slice != 0 ? (int)n/slice +1 : (int)n/slice;
        
        return answer;
    }
}
728x90
반응형