โ๏ธ์ต์๊ฐ ๋ง๋ค๊ธฐ
https://school.programmers.co.kr/learn/courses/30/lessons/12941
โ๋ฌธ์ ์ค๋ช
๊ธธ์ด๊ฐ ๊ฐ์ ๋ฐฐ์ด A, B ๋๊ฐ๊ฐ ์์ต๋๋ค. ๊ฐ ๋ฐฐ์ด์ ์์ฐ์๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
๋ฐฐ์ด A, B์์ ๊ฐ๊ฐ ํ ๊ฐ์ ์ซ์๋ฅผ ๋ฝ์ ๋ ์๋ฅผ ๊ณฑํฉ๋๋ค. ์ด๋ฌํ ๊ณผ์ ์ ๋ฐฐ์ด์ ๊ธธ์ด๋งํผ ๋ฐ๋ณตํ๋ฉฐ, ๋ ์๋ฅผ ๊ณฑํ ๊ฐ์ ๋์ ํ์ฌ ๋ํฉ๋๋ค. ์ด๋ ์ต์ข
์ ์ผ๋ก ๋์ ๋ ๊ฐ์ด ์ต์๊ฐ ๋๋๋ก ๋ง๋๋ ๊ฒ์ด ๋ชฉํ์
๋๋ค. (๋จ, ๊ฐ ๋ฐฐ์ด์์ k๋ฒ์งธ ์ซ์๋ฅผ ๋ฝ์๋ค๋ฉด ๋ค์์ k๋ฒ์งธ ์ซ์๋ ๋ค์ ๋ฝ์ ์ ์์ต๋๋ค.)
์๋ฅผ ๋ค์ด A = [1, 4, 2] , B = [5, 4, 4] ๋ผ๋ฉด
A์์ ์ฒซ๋ฒ์งธ ์ซ์์ธ 1, B์์ ์ฒซ๋ฒ์งธ ์ซ์์ธ 5๋ฅผ ๋ฝ์ ๊ณฑํ์ฌ ๋ํฉ๋๋ค. (๋์ ๋ ๊ฐ : 0 + 5(1x5) = 5)
A์์ ๋๋ฒ์งธ ์ซ์์ธ 4, B์์ ์ธ๋ฒ์งธ ์ซ์์ธ 4๋ฅผ ๋ฝ์ ๊ณฑํ์ฌ ๋ํฉ๋๋ค. (๋์ ๋ ๊ฐ : 5 + 16(4x4) = 21)
A์์ ์ธ๋ฒ์งธ ์ซ์์ธ 2, B์์ ๋๋ฒ์งธ ์ซ์์ธ 4๋ฅผ ๋ฝ์ ๊ณฑํ์ฌ ๋ํฉ๋๋ค. (๋์ ๋ ๊ฐ : 21 + 8(2x4) = 29)
์ฆ, ์ด ๊ฒฝ์ฐ๊ฐ ์ต์๊ฐ ๋๋ฏ๋ก 29๋ฅผ return ํฉ๋๋ค.
๋ฐฐ์ด A, B๊ฐ ์ฃผ์ด์ง ๋ ์ต์ข
์ ์ผ๋ก ๋์ ๋ ์ต์๊ฐ์ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
โ์ ํ์ฌํญ
๋ฐฐ์ด A, B์ ํฌ๊ธฐ : 1,000 ์ดํ์ ์์ฐ์
๋ฐฐ์ด A, B์ ์์์ ํฌ๊ธฐ : 1,000 ์ดํ์ ์์ฐ์
โ์
์ถ๋ ฅ ์
A | B | answer |
[1, 4, 2] | [5, 4, 4] | 29 |
[1,2] | [3,4] | 10 |
โ์ ์ถ๋ ฅ ์ ์ค๋ช
์
์ถ๋ ฅ ์ #1
๋ฌธ์ ์ ์์์ ๊ฐ์ต๋๋ค.
์
์ถ๋ ฅ ์ #2
A์์ ์ฒซ๋ฒ์งธ ์ซ์์ธ 1, B์์ ๋๋ฒ์งธ ์ซ์์ธ 4๋ฅผ ๋ฝ์ ๊ณฑํ์ฌ ๋ํฉ๋๋ค. (๋์ ๋ ๊ฐ : 4) ๋ค์, A์์ ๋๋ฒ์งธ ์ซ์์ธ 2, B์์ ์ฒซ๋ฒ์งธ ์ซ์์ธ 3์ ๋ฝ์ ๊ณฑํ์ฌ ๋ํฉ๋๋ค. (๋์ ๋ ๊ฐ : 4 + 6 = 10)
์ด ๊ฒฝ์ฐ๊ฐ ์ต์์ด๋ฏ๋ก 10์ return ํฉ๋๋ค.
๐ชํ์ด
ํ์ด๋ฒ์ผ๋ก ๊ฐ๋จํ๋ค.
์ฃผ์ด์ง ๋ฐฐ์ด 2๊ฐ์์ ํฐ ๊ฐ๊ณผ ์์ ๊ฐ์ด ๊ณฑํด์ ธ์ผ ๊ณฑํ ํ ๋ํ์ ๋ ์ต์๊ฐ์ด ๋์จ๋ค.
์ฆ ํ๋๋ ์ค๋ฆ์ฐจ์, ํ๋๋ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ๊ฐ๊ฐ ์ธ๋ฑ์ค์ ์๋ ๊ฐ๋ค์ ๊ณฑํด์ค์ผ ํ๋ค.
์ต๋๊ฐ * ์ต์๊ฐ ์ ๋์ ํฉ์ด์ฌ๋ง ๊ฒฐ๊ณผ๊ฐ ์ต์๊ฐ ๋๋ค.
โํ๋ฆฐ ํ์ด
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import java.util.Arrays;
import java.util.Collections;
public class LS_12941 {
public static void main(String[] args) {
int[] A = {1, 4, 2};
int[] B = {5, 4, 4};
System.out.println(solution(A, B));
}
public static int solution(int[] A, int[] B) {
Integer[] copyB = Arrays.stream(B).boxed().toArray(Integer[]::new);
int answer = 0;
Arrays.sort(A);
Arrays.sort(copyB, Collections.reverseOrder());
for (int i = 0; i < A.length; i++) {
answer += A[i] * copyB[i];
}
return answer;
}
}
|
cs |
ํ์ด ๋ฐฉ๋ฒ์ ๋ง์ง๋ง ํจ์จ์ฑ ํ ์คํธ์์ ํต๊ณผ๋์ง ์๋๋ค.
์ด์ ๋ ์ดํ์ ์ค๋ช ํ๊ฒ ๋ค.
โญ๋ง์ ํ์ด(์คํฌ์ฃผ์)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import java.util.Arrays;
public class LS_12941_success {
public static void main(String[] args) {
int[] A = {1, 4, 2};
int[] B = {5, 4, 4};
System.out.println(solution(A, B));
}
public static int solution(int[] A, int[] B) {
int answer = 0;
Arrays.sort(A);
Arrays.sort(B);
for (int i = 0; i < A.length; i++) {
answer += A[i] * B[B.length - i - 1];
}
return answer;
}
}
|
cs |
๐คํ๋ฆฐ ์ด์ ํ์ด
์ ์ ํ์ด๊ฐ ํ์ด๋ ๋ง์ง๋ง ํจ์จ์ฑ ๋ฌธ์ ์์ ํ๋ฆฌ๋ ์ด์ ๋
int ์ primitive type ์ Integer ์ธ Wrapper Class ๋ก ๋งค๋ฒ ๊ฐ์ธ์ค์ ์ด๋ค.
- ๋งค๊ฐ๋ณ์๋ก ๊ฐ์ฒด๋ฅผ ํ์๋ก ํ ๋
- ๊ธฐ๋ณธํ ๊ฐ์ด ์๋ ๊ฐ์ฒด๋ก ์ ์ฅํด์ผํ ๋
- ๊ฐ์ฒด ๊ฐ ๋น๊ต๊ฐ ํ์ํ ๋
์ด๋ฐ ๊ฒฝ์ฐ ๊ธฐ๋ณธํ์ ๊ฐ์ฒด๋ก ๋ค๋ฃจ๊ธฐ ์ํด ์ฌ์ฉํ๋ ํด๋์ค๋ค์ ๋ํผ ํด๋์ค(wrapper class)๋ผ๊ณ ํ๋ค.
๊ทธ๋ฆฌ๊ณ Integer๋ int์ ๋ ํผํด๋ ์ค ๋ผ๊ณ ํ ์ ์๋ค.
๐ก int์ Integer์ ์ฐจ์ด์
int : ์๋ฃํ(primitive type)
- ์ฐ์ ์ฐ์ฐ ๊ฐ๋ฅํจ
- null๋ก ์ด๊ธฐํ ๋ถ๊ฐ
Integer : ๋ํผ ํด๋์ค (Wrapper class)
- Unboxingํ์ง ์์ ์ ์ฐ์ ์ฐ์ฐ ๋ถ๊ฐ๋ฅํจ
- null๊ฐ ์ฒ๋ฆฌ ๊ฐ๋ฅ
boxing : primitive type -> wrapper class ๋ณํ ( int to Integer )
unboxing : wrapper class -> primitive type ๋ณํ ( Integer to int )
Integer[] copyB = Arrays.stream(B).boxed().toArray(Integer[]::new);
์ฌ๊ธฐ์๋ ๋งค๋ฒ ๋ฐ์ฑ์ด
for (int i = 0; i < A.length; i++) {
answer += A[i] * B[B.length - i - 1];
}
์ฌ๊ธฐ์๋ ๋งค๋ฒ ์ธ๋ฐ์ฑํด์ ์ฐ์ฐ์ ์คํ ํ์๊ธฐ ๋๋ฌธ์ ํจ์จ์ฑ์ด ๋ฎ๋ค๊ณ ๋์จ ๊ฒ์ด๋ค.
๋๊ธ