Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 백준1654번js
- 자바
- 객체
- 타입스크립트
- 모던자바스크립트4장
- API
- 백준부분수열의합js
- CS
- 프로그래머스
- 깃
- 데이터베이스
- 변수
- 리팩토링
- 예외처리
- 깃허브
- 웹
- Express
- var와let과const차이
- gui
- 파이프라인
- 오픈소스
- post
- js
- Node.js
- 브랜치
- npm
- 좋아요추가
- 컴퓨터공학
- 자바스크립트
- 리액트
Archives
- Today
- Total
Nevertheless
[JAVA] 최솟값 만들기 본문
< 내 풀이 >
import java.util.*;
class Solution
{
public int solution(int []A, int []B)
{
Integer b[]=new Integer[B.length];
for(int i=0;i<B.length;i++){
b[i]=B[i];
}
Arrays.sort(A); //A 배열을 오름차순으로 정렬
Arrays.sort(b,Collections.reverseOrder()); //b 배열을 내림차순으로 정렬
int answer = 0;
for(int i=0;i<A.length;i++){
int times=A[i]*b[i];
answer+=times;
}
return answer;
}
}
✏️ 풀이 방법
A와 B 배열의 길이는 같고, 각각의 배열에서 숫자 하나를 뽑아 곱하고, 그 곱을 누적해서 더한 값이 최소가 되어야하므로
가장 작은 수와 가장 큰 수를 곱하게 만들어야한다. 따라서 A 배열은 오름차순으로 정렬하고, B배열은 내림차순으로 정렬하여 계산했다.
⚠️ Collections.reverseOrder() 을 사용할 때 주의할 점
Collections는 Object를 상속한 클래스에 대해서 사용 가능한 인터페이스이므로, String, Integer, Double 등과 같은 Object 타입의 배열은 Collections.reverseOrder() 사용이 가능하고, 기본 타입 (primitive type) 인 int, double, char, float 등은 사용이 불가하다.
=> 다른 사람들의 풀이를 봤을 때 굳이 이거를 안쓰고 , Arrays.sort() 로 정렬한 다음 이런식으로 한 사람들도 많았다. 이게 어떻게 보면 더 좋은 방법인 것 같다. 이렇게 하면 내가 했던 것처럼 int 형 배열을 Integer 배열로 바꾸지 않아도 된다.
for (int i = 0; i < length; i++) {
answer += A[i] * B[length - 1 - i];
}
참고 블로그
'코딩테스트 > Programmers' 카테고리의 다른 글
[JAVA] 숫자의 표현 (1) | 2024.04.20 |
---|---|
[JAVA] 이진 변환 반복하기 (2) | 2024.04.18 |
[JAVA] JadenCase 문자열 만들기 (2) | 2024.04.18 |
[JAVA] 올바른 괄호 (0) | 2024.04.17 |
[JAVA] 붕대 감기 (0) | 2024.04.09 |