프로그래머스 문제풀이/알고리즘 (JAVA)

[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 0 (14~19번 문제풀이)

남건욱 2023. 9. 20. 01:23

목차

    반응형
    14. 짝수는 싫어요

    문제

    import java.util.ArrayList;
    import java.util.List;
    
    class Solution {
        public int[] solution(int n) {
            List<Integer> answerList = new ArrayList<>();
            
            for(int i = 1; i<=n; i++){
                if(i%2 != 0){
                    answerList.add(i);
                }
            }
            
            int[] answer = new int[answerList.size()];
            for(int i=0; i<answerList.size(); i++){
                answer[i] = answerList.get(i);
            }
            
            return answer;
        }
    }

    <작성한 코드>

    우선 정수형 리스트를 하나 만들어줬다. 그리고 if문에서 홀수들만 남을 수 있게 조건을 걸어주고 배열에 추가되도록 하였다. 반환형이 정해져 있어서 다시 내가 만든 리스트를 배열형태로 바꿔주고 반환하였다.

     

     

     

    15. 피자 나눠 먹기(1)

    문제

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

    <작성한 코드>

    피자는 7조각으로 나눠진다고 가정되었다. 따라서 만약 인원수가 7의 배수이면 피자의 개수를 그대로 넣어주었고, 만약 7의 배수가 아니라면 +=1을 해주어서 1판을 더 추가해 주도록 하였다.

     

     

     

     

    16. 피자 나눠 먹기(2)

    문제

    class Solution {
        public int solution(int n) {
            int num = 6;
            int answer = 0;
            
            while(num%n != 0){
                num+=6;
            }
            
            answer = num/6;
            
            return answer;
        }
    }

    <작성한 코드>

    우선 피자가 6조각이기 때문에 num을 6으로 초기화해주었다. 그 후 while문으로 피자조각/인원수를 했을 때 0이 나올 때까지 반복하게 하였다. num에 6을 계속 더해주어서 num% n이 0이 되는 순간 num은 필요한 피자 조각수를 가지고 있을 것이다. 따라서 조각수를 6으로 나눠주면 그게 정답이다.

     

     

     

    17. 피자 나눠 먹기(3)

    문제

    class Solution {
        public int solution(int slice, int n) {
            int answer = 0;
            
            // 7조각 10명 2판
            // 4조각 12명 3판
            
            if(n%slice == 0){
                answer = n/slice;
            } else{
                answer = (n/slice) + 1;
            }
            
            return answer;
        }
    }

    <작성한 코드>

    if문으로 인원수에서 조각수를 나눈 값이 0이면 그대로 반환해 주었고, 조각이 부족하여 나머지가 남는다면 +1을 해주어 피자 판수를 구하였다.

     

     

     

    18. 배열의 평균값

    문제

    class Solution {
        public double solution(int[] numbers) {
            double answer = 0;
            int sum = 0;
            
            for(int i=0; i<numbers.length; i++){
                sum += numbers[i];
            }
            
            answer = (double) sum / numbers.length;
            
            return answer;
        }
    }

    <작성한 코드>

    배열의 합으로 사용할 int형 변수 sum을 생성해 주었다. 후에 for문으로 numbers [0] 번째 값부터 마지막값까지 더 해준 뒤 double형으로 정수의 합/배열의 길이를 해주어서 답을 구했다.

     

     

     

    19. 옷가게 할인 받기

    문제

    class Solution {
        public int solution(int price) {
            int answer = 0;
            
            if(price >= 500000){
                answer = (int)(price * 0.8);
            } else if(price >= 300000){
                answer = (int)(price * 0.9);
            } else if(price >= 100000){
                answer = (int)(price * 0.95);
            } else{
                answer = price;
            }
            
            return answer;
        }
    }

    <작성한 코드>

    if-else 문으로 풀이하였다. 가격이 50만 원 이상이면 가격의 80 퍼만큼 지불, 30만 원 이상이면 90 퍼만큼 지불, 10만 원 이상이라면 95퍼만큼 지불하도록 하였고 10만원 미만일시에는 물건의 원래 가격만큼 반환하도록 하였다.

     

     

    반응형
    프로필사진

    남건욱's 공부기록