728x90
반응형
SMALL

문제 설명

정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.

제한 조건

  • arr은 길이 1 이상인 배열입니다.
  • 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.

입출력 예

arr return

[4,3,2,1] [4,3,2]
[10] [-1]
/*
정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요.
단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요.
예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.
 */
package LV1;

import java.util.*;
public class H12935 {
    public static int[] solution(int[] arr) {
        if(arr.length <= 1) return new int[] {-1};

        ArrayList<Integer> list = new ArrayList<Integer>();
        for (int a : arr) {
            list.add(a);
        }
        Integer min = Collections.min(list);
        list.remove(min);
        int[] answer = new int[arr.length - 1];
        for (int i = 0; i < list.size(); ++i) {
            answer[i] = list.get(i);
        }
        return answer;
    }

    public static void main(String[] args) {
        int[] arr = new int[]{4, 3, 2, 1};
        System.out.println(Arrays.toString(solution(arr)));
    }
}

배열제거

List를 이용해서 최솟값을 구하고 요소를 제거했다. 최솟값을 구할 때는 Collections.min(리스트)

를 사용하는데 반환값이 int가 아니라 Integer이다.

list.remove(Integer값)을 통해 요소를 제거하고, 다시 배열에 값을 넣는다.

포문으로 ArrayList에 하나씩 값을 넣을 때에는 add를 이용한다. 다시 배열로 바꿀때는 list의 길이는

.size()를 이용하고, 리스트에서 값을 하나씩 뺄때는 get(인덱스)를 이용한다.

참조형 int integer null값이 들어갈수 있다.

728x90
반응형
LIST

'알고리즘 > 프로그래머스 JAVA LV.1' 카테고리의 다른 글

하샤드 수  (0) 2023.01.28
콜라츠 추측  (0) 2023.01.28
정수 제곱근 판별  (0) 2023.01.28
정수 내림차순으로 배치하기  (0) 2023.01.28
자연수 뒤집어 배열로 만들기  (0) 2023.01.27
728x90
반응형
SMALL

문제 설명

임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.

제한 사항

  • n은 1이상, 50000000000000 이하인 양의 정수입니다.

입출력 예

n return

121 144
3 -1

입출력 예 설명

입출력 예#1121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다.

입출력 예#23은 양의 정수의 제곱이 아니므로, -1을 리턴합니다.

class Solution {
    public long solution(long n) {
       if(Math.pow(Math.sqrt(n), 2) == n) {
            return (long)Math.pow(Math.sqrt(n)+1,2);
        }

        return -1;
    }
}

틀린 이유

Math.sqrt()할때는 int로 형변환을 하지 않음…

/*
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
 */
package LV1;

import java.util.Arrays;

public class H12934 {
    public static long solution(long n) {
        if(Math.pow((int)Math.sqrt(n), 2) == n) {
            return (long)Math.pow((int)Math.sqrt(n)+1,2);
        }

        return -1;
    }
    public static void main(String[] args) {
        long n = 121;
        long n1 = 3;
        System.out.println(Arrays.toString(new long[]{solution(n)}));
    }
}

Math.sqrt()할때는 int로 형변환하고, Math.pow()로 계산할 때 long으로 해주었는데 됐다.

왜냐하면 Math.pow()는 반환타입이 double 이라 데이터를 잃지 않은 것이다. 그래서 마지막에 long으로 형변환 해주어도 정답

728x90
반응형
LIST

'알고리즘 > 프로그래머스 JAVA LV.1' 카테고리의 다른 글

콜라츠 추측  (0) 2023.01.28
제일 작은 수 제거하기  (0) 2023.01.28
정수 내림차순으로 배치하기  (0) 2023.01.28
자연수 뒤집어 배열로 만들기  (0) 2023.01.27
자릿수 더하기  (0) 2023.01.27
728x90
반응형
SMALL

문제 설명

함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.

제한 조건

  • n은 1이상 8000000000 이하인 자연수입니다.

입출력 예

n return

118372 873211
/*
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
 */
package LV1;

import java.util.Arrays;
import java.util.Collections;

public class H12933 {
    public static long solution(long n) {
        String[] answer = String.valueOf(n).split("");
        Arrays.sort(answer, Collections.reverseOrder());
        return Long.parseLong(String.join("", answer));
    }
        public static void main(String[] args) {
            long n = 118372;
            System.out.println(Arrays.toString(new long[]{solution(n)}));
        }
    }
  • 배열 정렬 : Arrays.sort(배열) - 배열은 int배열, 문자열 배열, char배열 모두 마찬가지로 Arrays.sort를 사용. (하지만 char 배열은 Collections.reverseOrder 사용불가)
  • 배열 정렬 내림차순: Arrays.sort(배열, Collections.reverseOrder())
  • 문자열.split("")해준 배열 다시 붙이기 : String.join("", 문자열 배열)
  • Long.parseLong(문자열)
728x90
반응형
LIST

'알고리즘 > 프로그래머스 JAVA LV.1' 카테고리의 다른 글

제일 작은 수 제거하기  (0) 2023.01.28
정수 제곱근 판별  (0) 2023.01.28
자연수 뒤집어 배열로 만들기  (0) 2023.01.27
자릿수 더하기  (0) 2023.01.27
이상한 문자 만들기  (0) 2023.01.27

+ Recent posts