[ ํ๋ก๊ทธ๋๋จธ์ค/Java ] ์์ ๋ง๋ค๊ธฐ
๋ฌธ์ ์ค๋ช
https://school.programmers.co.kr/learn/courses/30/lessons/12977
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
์ฃผ์ด์ง ์ซ์ ์ค 3๊ฐ์ ์๋ฅผ ๋ํ์ ๋ ์์๊ฐ ๋๋ ๊ฒฝ์ฐ์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ค๊ณ ํฉ๋๋ค. ์ซ์๋ค์ด ๋ค์ด์๋ ๋ฐฐ์ด nums๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, nums์ ์๋ ์ซ์๋ค ์ค ์๋ก ๋ค๋ฅธ 3๊ฐ๋ฅผ ๊ณจ๋ผ ๋ํ์ ๋ ์์๊ฐ ๋๋ ๊ฒฝ์ฐ์ ๊ฐ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- nums์ ๋ค์ด ์๋ ์ซ์์ ๊ฐ์๋ 3๊ฐ ์ด์ 50๊ฐ ์ดํ์ ๋๋ค.
- nums์ ๊ฐ ์์๋ 1 ์ด์ 1,000 ์ดํ์ ์์ฐ์์ด๋ฉฐ, ์ค๋ณต๋ ์ซ์๊ฐ ๋ค์ด์์ง ์์ต๋๋ค.
์ ์ถ๋ ฅ ์
nums | result |
[1, 2, 3, 4] | 1 |
[1, 2, 7, 6, 4] | 4 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
[1, 2, 4]๋ฅผ ์ด์ฉํด์ 7์ ๋ง๋ค ์ ์์ต๋๋ค.
์ ์ถ๋ ฅ ์ #2
[1, 2, 4]๋ฅผ ์ด์ฉํด์ 7์ ๋ง๋ค ์ ์์ต๋๋ค.
[1, 4, 6]์ ์ด์ฉํด์ 11์ ๋ง๋ค ์ ์์ต๋๋ค.
[2, 4, 7]์ ์ด์ฉํด์ 13์ ๋ง๋ค ์ ์์ต๋๋ค.
[4, 6, 7]์ ์ด์ฉํด์ 17์ ๋ง๋ค ์ ์์ต๋๋ค.
๋ด๊ฐ ์์ฑํ ์ฝ๋
class Solution {
public int solution(int[] nums) {
int answer = 0;
// ์ฒซ ๋ฒ์งธ ์ซ์์ ์์น
for (int i = 0; i < nums.length - 2; i++) {
// ๋ ๋ฒ์งธ ์ซ์์ ์์น
for (int j = i + 1; j < nums.length - 1; j++) {
// ์ธ ๋ฒ์งธ ์ซ์์ ์์น
for (int k = j + 1; k < nums.length; k++) {
// 3๊ฐ์ ์ซ์ ํฉ ๊ตฌํ๊ธฐ
int sum = nums[i] + nums[j] + nums[k];
// ์์์ธ์ง ํ์ธํ๊ธฐ
if (isPrime(sum)) {
answer++; // ๋ง์ฝ ์์๊ฐ ๋ง๋ค๋ฉด answer๋ 1 ์ฆ๊ฐํ๋ค.
}
}
}
}
return answer; // answer ๋ฐํํ๊ธฐ
}
// ์์์ธ์ง ํ์ธํ๋ ๋ฉ์๋ ์์ฑ
private boolean isPrime(int num) {
// num์ด 2์ธ์ง ํ์ธ
if(num == 2) {
return true; // 2๊ฐ ๋ง๋ค๋ฉด true ๋ฐํ
}
// 2๋ถํฐ ์๊ธฐ ์์ (num) ์ ๊น์ง ๋๋์ด ๋จ์ด์ง๋ ์ซ์๊ฐ ์๋์ง ํ์ธ
for (int i = 2; i < num; i++) {
if (num % i == 0) {
return false; // ๋๋์ด ๋จ์ด์ง๋ค๋ฉด false ๋ฐํ
}
}
return true; // ๋๋์ด ๋จ์ด์ง์ง ์์๋ค๋ฉด true ๋ฐํ
}
}