1️⃣ 나머지 구하기

 

문제 설명

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

 

제한사항

  • 0 < num1 ≤ 100
  • 0 < num2 ≤ 100

입출력 예

num1 num2 result
3 2 1
10 5 0

 

  • num1이 3, num2가 2이므로 3을 2로 나눈 나머지 1을 return 합니다.
  • num1이 10, num2가 5이므로 10을 5로 나눈 나머지 0을 return 합니다.


 

💻 나의 풀이

class Solution {
    public int solution(int num1, int num2) {
        return num1%num2;
    }
}

 

 

🔎 다른 사람의 풀이

class Solution {
    public int solution(int num1, int num2) {
        while (num1 >= num2) {
            num1 = num1 - num2;
        }
        int answer = num1;
        return answer;
    }
}
  1. while (num1 >= num2) : num1이 num2보다 크거나 같은 동안 반복합니다.
  2. num1 = num1 - num2 : num1에서 num2를 빼서 num1을 갱신합니다. 이는 num1이 num2로 나누어 떨어질 때까지 반복됩니다.
  3. int answer = num1 : 최종적으로 남은 num1이 두 정수의 최대공약수입니다.
  4. return answer : 계산된 최대공약수를 반환합니다.

이 코드는 두 정수의 최대공약수를 계산하는 목적으로 사용됩니다. 유클리드 알고리즘은 최대공약수를 효율적으로 계산하는 알고리즘 중 하나이며, 두 정수 a와 b에 대해 GCD(a, b)는 GCD(b, a % b)와 같습니다. 이를 재귀적으로 계산하거나 반복문을 사용하여 최종적으로 b가 0이 되었을 때의 a가 최대공약수가 됩니다.

 

 


 

 

2️⃣ 중앙값 구하기

 

문제 설명

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

 

제한사항

  • array의 길이는 홀수입니다.
  • 0 < array의 길이 < 100
  • -1,000 < array의 원소 < 1,000

입출력 예

array result
[1, 2, 7, 10, 11] 7
[9, -1, 0] 0

 


 

💻 나의 풀이

import java.util.Arrays;

class Solution {
    public int solution(int[] array) {
        Arrays.sort(array);  // 크기 순서대로 정렬
        int length = array.length;
        int answer = array[length / 2];
        return answer;
    }
}

 

Arrays의 sort 메서드를 사용하기 위해 import를 했고, 

문제의 제한사항에서 array는 홀수의 길이라고 이미 정의를 해뒀기 때문에 배열의 길이가 홀수일 경우 / 짝수일 경우를 구분하는 것은 배제했습니다.

 

 

🔎 다른 사람의 풀이

class Solution {
    public int solution(int[] array) {
        int answer = 0;

        for (int i = 0; i < array.length; i++) {
            for (int j = i; j < array.length; j++) {
                if (array[j] < array[i]) {
                    int temp = array[i];
                    array[i] = array[j];
                    array[j] = temp;
                }
            }
        }

        answer = array[array.length / 2];

        return answer;
    }
}

 

 


 

3️⃣ 최빈값 구하기

 

문제 설명

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

 

제한사항

  • 0 < array의 길이 < 100
  • 0 ≤ array의 원소 < 1000

입출력 예

array result
[1, 2, 3, 3, 3, 4] 3
[1, 1, 2, 2] -1
[1] 1

 


 

💻 나의 풀이

import java.util.Arrays;

class Solution {
    public int solution(int[] array) {
        Arrays.sort(array);  // 크기 순서대로 정렬
        int length = array.length;
        int answer = array[length / 2];
        return answer;
    }
}

 

머릿 속에 이런 저런 로직들이 떠오르기는 하는데 직접 작성해보려면 정리가 안되는 느낌이 있습니다. 아직도 미숙한 탓이겠지요. 

 

 

🔎 다른 사람의 풀이

import java.util.*;
class Solution {
    public int solution(int[] array) {
        int maxCount = 0;
        int answer = 0;
        Map<Integer, Integer> map = new HashMap<>();
        for(int number : array){
            int count = map.getOrDefault(number, 0) + 1;
            if(count > maxCount){
                maxCount = count;
                answer = number;
            }
            else  if(count == maxCount){
                answer = -1;
            }
            map.put(number, count);
        }
        return answer;
    }
}

 

 

 


 

 

4️⃣ 짝수는 싫어요

 

문제 설명

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

 

제한사항

  • 1 ≤ n ≤ 100

입출력 예

n result
10 [1, 3, 5, 7, 9]
15 [1, 3, 5, 7, 9, 11, 13, 15]

 


 

💻 나의 풀이

class Solution {
    public int[] solution(int n) {
        int[] answer;
        // answer 배열의 길이
        if(n%2==0){  // n이 짝수일 경우
            answer = new int[n/2];  // 배열의 길이는 n의 절반
        } else{  // n이 홀수일 경우
            answer = new int[(n+1)/2];  // n+1의 절반
        }
        for(int i=0; i<answer.length; i++){  // i가 0부터 배열의 길이만큼 반복
            answer[i]=(i*2)+1;  // 2n+1 : 홀수만 담기
        }
        return answer;
    }
}

 

answer 배열의 길이를 먼저 지정해줍니다.

짝수일 경우엔 정수 n의 절반 / 홀수이 경우엔 정수 n에 1을 더한 후, 그 값의 절반.

그 다음엔 answer 배열의 길이만큼 반복문을 돌면서 홀수만 차곡차곡 담아줍니다.

 

 

🔎 다른 사람의 풀이

import java.util.stream.IntStream;

class Solution {
    public int[] solution(int n) {
        return IntStream.rangeClosed(0, n).filter(value -> value % 2 == 1).toArray();
    }
}

 

'프로그래머스 > 0단계' 카테고리의 다른 글

DAY6 문자열, 반복문, 출력, 배열, 조건문  (1) 2023.11.23
DAY5 수학, 배열  (1) 2023.11.23
DAY4 수학, 배열  (0) 2023.11.22
DAY2 사칙연산, 조건문, 배열  (1) 2023.11.21
DAY1 사칙연산 / 옹알이  (1) 2023.11.20
xoo | 수진