프로그래머스 문제풀이/알고리즘 (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 공부기록