1️⃣ 나머지 구하기
문제 설명
정수 num1, num2가 매개변수로 주어질 때, 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;
}
}
- while (num1 >= num2) : num1이 num2보다 크거나 같은 동안 반복합니다.
- num1 = num1 - num2 : num1에서 num2를 빼서 num1을 갱신합니다. 이는 num1이 num2로 나누어 떨어질 때까지 반복됩니다.
- int answer = num1 : 최종적으로 남은 num1이 두 정수의 최대공약수입니다.
- 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 |