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

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

남건욱 2023. 10. 10. 10:53
반응형
123. 전국 대회 선발 고사

문제

import java.util.*;

class Solution {
    public int solution(int[] rank, boolean[] attendance) {
        int answer = 0;
        int array[] = new int[rank.length];
        
        for(int i=0; i<rank.length; i++){
            if(attendance[i]) array[i] = rank[i];
            else rank[i] = 101;
        }
        
        Arrays.sort(rank);
        
        for(int i=0; i<array.length; i++){
            if(rank[0] == array[i]){
                answer += i*10000;
            }else if(rank[1] == array[i]){
                answer += i*100;
            }else if(rank[2] == array[i]){
                answer += i;
            }
        }
        
        
        return answer;
    }
}

<작성한 코드>

rank의 길이만큼 정수형 배열 array를 선언해 줬다. 그리고 for문으로 만약 attendance [i]가 참이면 array에 추가해 줬고 거짓이라면 rank [i] 번째에 올 수 있는 최대경우의 수 100을 넘는 101을 넣어주었다. 그 뒤 Array.sort를 이용해서 rank배열을 오름차순으로 정렬해 줬다. 이렇게 되면 rank [0], rank [1], rank [2]가 1,2,3 등으로 정렬된다. 그래서 다음 for문에서는 rank [0]에 들어있는 값이 array [i]와 일치하면 그 자릿수인 i에 곱하기 10000을 하고 rank [1]는 i에 곱하기 100 rank [2]는 그대로 더해주고 반환하였다.

 

 

 

124. 뒤에서 5등 위로

문제

import java.util.*;

class Solution {
    public int[] solution(int[] num_list) {
        int[] answer = new int[num_list.length-5];
        int num = 0;
        Arrays.sort(num_list);
        
        for(int i=5; i<num_list.length; i++){
            answer[num] = num_list[i];
            num++;
        }
        
        return answer;
    }
}

<작성한 코드>

answer의 길이는 num_list에서 5를 뺀값만큼 설정해 줬다. 그 뒤 Array.sort를 사용해서 num_list를 오름차순으로 정렬해 주고 for문을 통해서 5개를 뺀 다음 i는 5부터 num_list의 길이까지 반복시켰다. answer [0]부터 시작했고 num_list [i]의 값을 차례로 넣어준 뒤 반환하였다.

 

 

 

125. 뒤에서 5등까지

문제

import java.util.*;

class Solution {
    public int[] solution(int[] num_list) {
        int[] answer = new int[5];
        
        Arrays.sort(num_list);
        
        for(int i=0; i<5; i++){
            answer[i] = num_list[i];
        }
        
        
        return answer;
    }
}

<작성한 코드>

이전 문제와 비슷했다. num_list를 오름차순 정렬후 5개만 answer [i]에 대입해 주고 반환하였다.

 

 

 

126. 배열의 길이에 따라 다른 연산하기

문제

class Solution {
    public int[] solution(int[] arr, int n) {
        int[] answer = new int[arr.length];
        
        for(int i=0; i<arr.length; i++){
            if(arr.length % 2 == 1){
                if(i%2 == 0) answer[i] = arr[i]+n;
                else answer[i] = arr[i];
            }else{
                if(i%2 == 1) answer[i] = arr[i]+n;
                else answer[i] = arr[i];
                }
            }
        
        return answer;
    }
}

<작성한 코드>

arr의 길이만큼 반복문을 돌렸다. 그 뒤 if문으로 길이가 홀수이면 짝수번째에 +n을 해줬고 길이가 짝수이면 홀수번째에 +n을 해주고 반환하였다.

 

반응형
프로필사진

남건욱's 공부기록