Algorithm/Problem_프로그래머스
프로그래머스(정수 내림차순으로 배치하기, 정수 제곱근 판별, 제일 작은 수 제거하기) - Java
uyoo
2020. 5. 29. 15:34
[정수 내림차순으로 배치하기]
https://programmers.co.kr/learn/courses/30/lessons/12933
코딩테스트 연습 - 정수 내림차순으로 배치하기
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n은 1이��
programmers.co.kr
* 로직
- 문자열로 변환한 뒤, 각각의 수를 리스트에 넣는다
- 리스트를 내림차순 정렬한다
- 정렬된 문자를 값으로 변환한다
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
class Solution {
public long solution(long n) {
long answer = 0;
ArrayList<Integer> list = new ArrayList<>();
String str = String.valueOf(n);
for(int i=0; i<str.length(); ++i) {
list.add(Integer.parseInt(str.substring(i, i+1)));
}
Collections.sort(list, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
});
StringBuilder sb = new StringBuilder();
for(int value : list) {
sb.append(value);
}
answer = Long.parseLong(sb.toString());
return answer;
}
}
[정수 제곱근 판별]
https://programmers.co.kr/learn/courses/30/lessons/12934
코딩테스트 연습 - 정수 제곱근 판별
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함�
programmers.co.kr
* 로직
- Math.sqrt를 통해 나온 값(value)를 이용한다
- 만약 value*value == n이라면 -> value+1 제곱값을 리턴한다
- 같지 않다면 -> -1을 리턴한다
class Solution {
public long solution(long n) {
long answer = 0;
long value = (long) Math.sqrt(n);
if(value*value == n) {
answer = (value+1) * (value+1);
}
else answer = -1;
return answer;
}
}
[제일 작은 수 제거하기]
코딩테스트 연습 - 제일 작은 수 제거하기
정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1
programmers.co.kr
* 로직
- 주어진 배열에서 가장 작은 값을 가지는 인덱스를 저장한다
- 만약 주어진 배열의 사이즈가 1이라면 -> -1을 리턴한다
- 그렇지 않다면 -> answer의 사이즈는 (주어진 배열의 사이즈-1)이고, 사전에 저장한 인덱스를 제외한 값을 answer에 넣어준다
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr) {
int[] answer = {};
int idx = 0;
int min = Integer.MAX_VALUE;
for(int i=0; i<arr.length; ++i) {
if(min > arr[i]) {
min = arr[i];
idx = i;
}
}
if(arr.length == 1) {
answer = new int[1];
answer[0] = -1;
}
else {
answer = new int[arr.length-1];
int index=0;
for(int i=0; i<arr.length; ++i) {
if(i != idx) {
answer[index++] = arr[i];
}
}
}
return answer;
}
}