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