본문 바로가기

study_IT/알고리즘 노트

[programmers] 코딩테스트 입문 Day 3

728x90
반응형

1. 나머지 구하기

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

2. 중앙값 구하기

import java.util.Arrays;

class Solution {
    public int solution(int[] array) {
        // 배열 정렬 (이미 정렬되어 있다면 생략 가능)
        Arrays.sort(array);
        
        int length = array.length;
        int middleIndex = length / 2;
        
        if (length % 2 == 1) {
            // 배열의 길이가 홀수인 경우
            return array[middleIndex];
        } else {
            // 배열의 길이가 짝수인 경우
            return (array[middleIndex - 1] + array[middleIndex]) / 2;
        }
    }
}

3. 최빈값 구하기

import java.util.HashMap;
import java.util.Map;

public class Solution {
    public int solution(int[] array) {
        Map<Integer, Integer> frequencyMap = new HashMap<>();

        // 빈도수 계산
        for (int num : array) {
            frequencyMap.put(num, frequencyMap.getOrDefault(num, 0) + 1);
        }

        int maxFrequency = 0;
        int mode = -1;

        // 최빈값 찾기
        for (Map.Entry<Integer, Integer> entry : frequencyMap.entrySet()) {
            int num = entry.getKey();
            int frequency = entry.getValue();

            if (frequency > maxFrequency) {
                maxFrequency = frequency;
                mode = num;
            } else if (frequency == maxFrequency) {
                // 최빈값이 여러 개일 경우 -1 반환
                mode = -1;
            }
        }

        return mode;
    }

}

4. 짝수는 싫어요

import java.util.ArrayList;

class Solution {
    public int[] solution(int n) {

	ArrayList<Integer> list = new ArrayList<>();
        
        for (int i = 1; i <= n; i++) {
			if(i%2==1){
				list.add(i);
				} 		
        	}
	int[] array = new int[list.size()];
        for (int i = 0; i < list.size(); i++) {
           array[i] = list.get(i);
        }

        return array;
        
    }
}
728x90
반응형