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
- 백준 11659
- vm인스턴스생성
- java
- Spring MVC 동작원리
- 재귀함수
- 백준
- 코드스테이츠
- Array.asList
- 버블정렬
- 코딩테스트
- 성능테스트툴
- 스택
- List.of
- 알고리즘
- 자바
- 재귀와반복문
- 구간합구하기
- 프로그래머스
- 클라우드에서 도커 실행하기
- 투포인터알고리즘
- Spring Web MVC
- GCP
- 11659
- MySQL
- 인텔리제이
- 싱글톤패턴
- OOP
- Spring MVC 구성요소
- String.valueOf()
- 코드스테이츠 백엔드
Archives
- Today
- Total
순간을 기록으로
[프로그래머스] 최솟값 만들기/Java 본문
문제
https://programmers.co.kr/learn/courses/30/lessons/12941/solution_groups?language=java
풀이
두 배열의 원소를 각각 골라 두 원소의곱을 구하고 배열의 길이만큼 계속 더한 값의 최솟값을 구하는 문제다.
잠시 생각해보면 최솟값은 한 배열의 큰 값을 다른 배열의 작은 값으로 곱하는 경우일 때 만들어지는 것을 알 수있다.
따라서 두 배열을 오름차순으로 정렬하고, 반복문과 인덱스를 이용해서 접근하는데 A배열은 첫 원소부터, B 배열은 끝 원소부터 접근하면 된다.
주의할 점
배열의 마지막 원소의 인덱스는 배열의 길이 -1인 것을 주의하자.
코드
package 프로그래머스.레벨2.최솟값만들기.첫풀이;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import java.util.Arrays;
/*
* 두 배열의 곱의 합이 최소가 되려면 한 배열의 최솟값이 다른 배열의 최댓값과 곱하는 방식이어야 한다.
* */
public class Solution {
public int solution(int []A, int []B) {
int answer = 0;
int size = A.length;
Arrays.sort(A);
Arrays.sort(B);
for (int i=0; i<size; i++) {
answer += A[i] * B[size-(i+1)];
}
return answer;
}
@Test
void test() {
int[] A = {1, 4, 2};
int[] B = {5, 4 ,4};
Assertions.assertEquals(29, solution(A, B));
A = new int[]{1, 2};
B = new int[]{3, 4};
Assertions.assertEquals(10, solution(A, B));
}
}
'Problem Solving' 카테고리의 다른 글
[프로그래머스] 루시와 엘라 찾기 (0) | 2022.02.16 |
---|---|
[프로그래머스] N개의 최소공배수/ Java (0) | 2022.02.14 |
[프로그래머스] 땅따먹기/Java (0) | 2022.02.14 |
[프로그래머스] 행렬의곱셈/ Java (0) | 2022.02.14 |
[프로그래머스] 피보나치 수/ Java (0) | 2022.02.13 |
Comments