22. 제일 작은 수 제거하기
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
if(arr.length == 1){
return new int[]{-1};
}
int min = Arrays.stream(arr).min().getAsInt();
List<Integer> list = new ArrayList<>();
for(int i=0; i<arr.length; i++){
if(arr[i] != min) list.add(arr[i]);
}
int[] answer = new int[list.size()];
for(int i=0; i<list.size(); i++){
answer[i] = list.get(i);
}
return answer;
}
}
<작성한 코드>
arr의 길이가 1이라면 -1을 바로 반환해 줬다. 아니라면 정수형 변수 min에 Arrays.stream(). min(). getAsInt()를 사용해서 제일 작은 정수를 담아준다. 그리고 list를 선언해 준 뒤 반복문을 사용해서 방금 구해준 min과 arr [i] 값이 같지 않으면 list에 추가해 줬다. 그 뒤 list의 크기만큼 answer의 크기를 선언해 준 뒤 answer안에 list의 값을 넣어주고 반환하였다.
23. 짝수와 홀수
class Solution {
public String solution(int num) {
String answer = "";
if(num%2 == 0){
answer += "Even";
} else{
answer += "Odd";
}
return answer;
}
}
<작성한 코드>
간단한 코드이다. 짝수이면 Even, 홀수이면 Odd를 추가해주고 answer를 반환해 줬다.
24. 최대공약수와 최소공배수
import java.util.*;
class Solution {
public int[] solution(int n, int m) {
int[] answer = new int[2];
List<Integer> list = new ArrayList<>();
for(int i=1; i<=Math.min(n,m); i++){
if(n%i == 0 && m%i == 0){
list.add(i);
}
}
answer[0] = list.get(list.size()-1);
answer[1] = n * m / answer[0];
return answer;
}
}
<작성한 코드>
answer의 길이는 최대공약수, 최소공배수 두 개만 넣으면 되니 2로 지정해 주고, list를 하나 만들어줬다. 그 뒤 for문으로 1부터 n, m 중 작은 값까지 반복하도록 하고 두 개의 공약수들을 list에 저장했다. 그 뒤 최대공약수에는 list의 마지막값을 대입해 줬다. 최대공배수는 n*m을 해준뒤 최대공약수로 나눠주고 answer[1]에 대입해줬다. 그 뒤 answer을 반환하였다.
25. 콜라츠 추측
class Solution {
public int solution(long num) {
int answer = 0;
while(num != 1){
if(num%2 == 0){
num /= 2;
} else{
num = num*3 + 1;
}
answer++;
if(answer >= 500){
return -1;
}
}
return answer;
}
}
<작성한 코드>
간단한 문제였다. while문으로 num이 1이 아닐 때 반복하도록 했고, 짝수면 나누기 2 홀수면 곱하기 3을 하고 1을 더해줬다. 그 뒤 answer을 1씩 증가시키고 마지막에 answer이 500 이상이 되면 -1을 반환하였다.
26. 평균 구하기
class Solution {
public double solution(int[] arr) {
double answer = 0;
for(int a : arr){
answer += a;
}
answer = answer/(arr.length);
return answer;
}
}
<작성한 코드>
간단한 문제였다. arr의 값들을 전부 answer에 더해주고 더한 값을 arr의 길이로 나눠주고 반환했다.
27. 하샤드 수
class Solution {
public boolean solution(int x) {
boolean answer = true;
String result = String.valueOf(x);
int sum = 0;
for(int i=0; i<result.length(); i++){
sum += Integer.parseInt(String.valueOf(result.charAt(i)));
}
if(x%sum != 0){
answer = false;
}
return answer;
}
}
<작성한 코드>
정수형 값 x를 문자열로 변환해 주고 자릿수의 합을 저장할 sum을 선언해 줬다. 그 뒤 for문을 사용해서 result의 길이만큼 반복해 주고 각 자릿수를 Integer.parseInt()를 사용해서 정수로 바꾼 뒤 sum에 더해줬다. 아래 if문에서는 sum이 x의 약수인지 확인하고 아니라면 answer에 false를 대입해 준다. 그 뒤 answer를 반환했다.
28. 핸드폰 번호 가리기
class Solution {
public String solution(String phone_number) {
String answer = "";
for(int i=0; i<phone_number.length(); i++){
char ch = phone_number.charAt(i);
if(i < phone_number.length() - 4){
answer += "*";
} else{
answer += ch;
}
}
return answer;
}
}
<작성한 코드>
for문을 사용해서 핸드폰번호의 길이까지 반복해 줬다. 내부에서는 핸드폰번호를 한 글자씩 ch에 담아주고 조건문으로 i가 마지막 4자리가 아니라면 *을 추가하고 마지막 4자리라면 추출한 ch를 추가해 주고 answer를 반환해 줬다.
29. 행렬의 덧셈
class Solution {
public int[][] solution(int[][] arr1, int[][] arr2) {
int[][] answer = new int[arr1.length][arr1[0].length];
for(int i=0; i<arr1.length; i++){
for(int j=0; j<arr1[0].length; j++){
answer[i][j] = arr1[i][j] + arr2[i][j];
}
}
return answer;
}
}
<작성한 코드>
간단한 문제였다. answer의 크기는 arr1의 행과 열의 길이로 선언해 줬다. 그 뒤 반복문을 사용해서 arr1 + arr2의 값을 answer에 넣어주고 반환했다.
'프로그래머스 문제풀이 > 알고리즘 (JAVA)' 카테고리의 다른 글
남건욱's 공부기록