사용언어 : Java
난이도 : Lv.0
1. 나머지 구하기
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
정수 num1, num2가 매개변수로 주어질 때, num1를 num2로 나눈 나머지를 return 하도록 solution 함수를 완성해주세요.
제한사항
- 0 < num1 <= 100
- 0 < num2 <= 100
입출력 예
입출력 예 설명
입출력 예 #1
- num1이 3, num2가 2이므로 3을 2로 나눈 나머지 1을 return 합니다.
입출력 예 #2
- num1이 10, num2가 5이므로 10을 5로 나눈 나머지 0을 return 합니다.
class Solution {
public int solution(int num1, int num2) {
return num1 % num2;
}
}
2. 중앙값 구하기
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다. 정수 배열 array가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요.
제한사항
- array의 길이는 홀수입니다.
- 0 < array의 길이 < 100
- -1,000 < array의 원소 < 1,000
입출력 예
입출력 예 설명
입출력 예 #1
- 본문과 동일합니다.
입출력 예 #2
- 9, -1, 0을 오름차순 정렬하면 -1, 0, 9이고 가장 중앙에 위치하는 값은 0입니다.
풀이
우선 정렬하는 코드를 만들어서 오름차순 또는 내림차순으로 정렬을 하고, 배열을 반으로 나누어서 중앙 값을 answer에 넣어서 return 할 수 있도록 했다.
class Solution {
public int solution(int[] array) {
int answer = 0;
int tmp;
for(int i = 0; i < array.length - 1; i++) {
for(int j = i + 1; j < array.length; j++) {
if(array[i] > array[j]) {
tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
}
}
answer = array[array.length/2];
return answer;
}
}
Array.sort() 함수를 사용하면 반복문을 사용하지 않고 자동으로 배열을 정렬해주는 함수를 썼으면 좀 더 간결하게 작성이 가능했다. 나는.. 풀 때는 sort 함수가 생각이 안났다..
3. 최빈값 구하기
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
제한사항
- 0 < array의 길이 < 100
- 0 <= array의 원소 < 1000
입출력 예
입출력 예 설명
입출력 예 #1
- [1, 2, 3, 3, 3, 4] 에서 1은 1개 2는 1개 3은 3개 4는 1개로 최빈값은 3입니다.
입출력 예 #2
- [1, 1, 2, 2]에서 1은 2개 2는 2개로 최빈값이 1, 2입니다. 최빈값이 여러 개이므로 -1을 return 합니다.
입출력 예 #3
- [1]에는 1만 있으므로 최빈값은 1입니다.
풀이
class Solution {
public int solution(int[] array) {
int answer = 0;
int[] number = new int[1001];
int max = 0;
for (int i = 0; i < array.length; i++) {
number[array[i]]++;
}
for (int i = 0; i < 1001; i++) {
if (number[i] > max) {
max = number[i];
answer = i;
}
}
for (int i = answer + 1; i < 1001; i++) {
if (max == number[i]) {
return -1;
}
}
return answer;
}
}
풀고나서 다른 사람들의 풀이를 보니까 Map을 이용해서 해당 값이 몇 번 나왔는지 카운트 해주는 함수를 사용하는 방법도 있었다. 나는 좀 어려운거 같아서 그냥 반복문 넣어서 사용했다.
Map 사용한 풀이 (김지애님 풀이 코드 참고)
import java.util.*;
class Solution {
public int solution(int[] array) {
int maxCount = 0;
int answer = 0;
Map<Integer, Integer> map = new HashMap<>();
// getOrDefault : 찾는 키가 존재한다면 찾는 키의 값을 반환하고 없다면 기본 값을 반환하는 메서드
// getPrDefault(Object key, V DefaultValue)
// 매개변수 : 이 메서드는 두개의 매개변수를 허용
// key : 값을 가져와야 하는 요소의 키
// defaultValue : 지정된 키로 매핑된 값이 없는 경우 반환되어야 하는 기본값
// 반환값 : 찾는 key가 존재하면 해당 key에 매핑되어 있는 값을 반환하고, 그렇지 않으면 디폴트 값이 반환
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. 짝수는 싫어요
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
정수 n이 매개변수로 주어질 때, n 이하의 홀수가 오름차순으로 담긴 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ n ≤ 100
입출력 예
입출력 예 설명
입출력 #1
- 10 이하의 홀수가 담긴 배열 [1, 3, 5, 7, 9]를 return합니다.
입출력 #2
- 15 이하의 홀수가 담긴 배열 [1, 3, 5, 7, 9, 11, 13, 15]를 return합니다.
풀이
import java.util.ArrayList;
class Solution {
public int[] solution(int n) {
int[] answer = new int[n / 2 + n % 2];
for (int i = 1; i <= n; i++) {
if (i == 1) {
answer[0] = 1;
} else if (i % 2 != 0) {
answer[i / 2] = i;
}
}
return answer;
}
}
다른 사람의 풀이 (홍희표님 코드 참고)
import java.util.stream.IntStream;
class Solution {
public int[] solution(int n) {
return IntStream.rangeClosed(0, n).filter(value -> value % 2 == 1).toArray();
}
}
후기
문제 푸는 거 자체는 어렵지 않았는데 코드를 간결하게 작성하는 방법을 조금 더 터득해야 될 것 같다. 어쩜 같은 문제를 푸는데도 이렇게 코드 길이가 차이가 나는지 ㅠㅠ.. 🥲 그래도 풀었다는거에 의미를 두도록 하자!
'알고리즘' 카테고리의 다른 글
[Java] 프로그래머스 코딩테스트 입문 Day 6 (0) | 2022.12.23 |
---|---|
[Java] 프로그래머스 코딩테스트 입문 Day 5 (1) | 2022.12.22 |
[Java] 프로그래머스 코딩테스트 입문 Day 4 (1) | 2022.12.20 |
[Java] 프로그래머스 코딩테스트 입문 Day 2 (1) | 2022.12.17 |
[Java] 프로그래머스 코딩테스트 입문 Day 1 (0) | 2022.12.17 |