코딩테스트 3일차

차준우·2022년 12월 8일
0

프로그래머스 코딩테스트 입문 - DAY3

나머지 구하기
정수 num1, num2가 매개변수로 주어질 때, num1를 num2로 나눈 나머지를 return 하도록 solution 함수를 완성해주세요.

테스트 케이스

class Solution {
    public int solution(int num1, int num2) {
        int answer = -1; 
        return num1 % num2;
    }
}

중앙값 구하기
중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다. 정수 배열 array가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요.

테스트 케이스

import java.util.Arrays;
class Solution {
    public int solution(int[] array) {
        int answer = 0;
        Arrays.sort(array);
        answer = array[array.length / 2];
        return answer;
    }
}

정렬 방법은 반복문을 이용해도 가능하지만 Arrays의 sort메소드를 사용했다.(import 필수!!)

최빈값 구하기
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.

테스트 케이스

class Solution {
    public int solution(int[] array) {
        int answer = 0;
        int max = 0;
        int idx = 0;
        int checker=0;
        int[] cnt = new int[1000];
        if(array.length==1){
            answer = array[0];
        }
        else{
            for(int i=0;i<array.length;i++) {
                cnt[array[i]]++;
            }
            max = cnt[0];
            for(int i=1;i<cnt.length;i++){
                if(max<cnt[i]){
                    max = cnt[i];
                    answer = i;
                }
                else if (max == cnt[i]){
                    answer = -1;
                }
            }
        }
        return answer;
    }
}

배열 값이 한개일 경우를 고려해야 한다.
for문의 경우 다음과 같이 간단하게 사용 가능하다.(int i:배열명){}

for(int i=0;i<array.length;i++) {}
//for(int i:array) {}

배열명 대신 단순 숫자를 (int i:숫자){}처럼 사용하는 것은 안된다.

짝수는 싫어요
정수 n이 매개변수로 주어질 때, n 이하의 홀수가 오름차순으로 담긴 배열을 return하도록 solution 함수를 완성해주세요.

테스트 케이스

class Solution {
    public int[] solution(int n) {
        int j==0; //answer의 index값
        int m = 0; //answer의 길이(배열크기)
        if(n%2==0) { 
            m = n/2;
        }
        else {
            m= n/2+1;
        }
        int[] answer = new int[m];
        for(int i=1;i<=n;i++) {
            if(i%2==1){
                answer[j] = i;
                j++;
            }
        }
        return answer;
    }
}

n이 짝수이냐 홀수이냐의 여부에 따라 answer(배열)크기가 달라진다
0부터 n까지의 값 중 홀수일 경우에만 answer에 담아 return했다.

+)배열 선언의 경우, int[] answer;로도 가능하지만 결국 사용하려면
선언 후에 answer = new int[5];처럼 초기화 해야한다. 가능하다면 선언과 동시에 초기화하는 것이 좋을 것으로 보인다.

출처 : https://school.programmers.co.kr/learn/challenges

profile
개애발

0개의 댓글