๋ฌธ์ ์ค๋ช
https://school.programmers.co.kr/learn/courses/30/lessons/131705
ํ๊ตญ์คํ๊ต์ ๋ค๋๋ ํ์๋ค์ ๊ฐ์ ์ ์ ๋ฒํธ๋ฅผ ๊ฐ๊ณ ์์ต๋๋ค. ์ด ํ๊ต ํ์ 3๋ช
์ ์ ์ ๋ฒํธ๋ฅผ ๋ํ์ ๋ 0์ด ๋๋ฉด 3๋ช
์ ํ์์ ์ผ์ด์ฌ๋ผ๊ณ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, 5๋ช
์ ํ์์ด ์๊ณ , ๊ฐ๊ฐ์ ์ ์ ๋ฒํธ๊ฐ ์์๋๋ก -2, 3, 0, 2, -5์ผ ๋, ์ฒซ ๋ฒ์งธ, ์ธ ๋ฒ์งธ, ๋ค ๋ฒ์งธ ํ์์ ์ ์ ๋ฒํธ๋ฅผ ๋ํ๋ฉด 0์ด๋ฏ๋ก ์ธ ํ์์ ์ผ์ด์ฌ์
๋๋ค. ๋ํ, ๋ ๋ฒ์งธ, ๋ค ๋ฒ์งธ, ๋ค์ฏ ๋ฒ์งธ ํ์์ ์ ์ ๋ฒํธ๋ฅผ ๋ํด๋ 0์ด๋ฏ๋ก ์ธ ํ์๋ ์ผ์ด์ฌ์
๋๋ค. ๋ฐ๋ผ์ ์ด ๊ฒฝ์ฐ ํ๊ตญ์คํ๊ต์์๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ผ์ด์ฌ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
ํ๊ตญ์คํ๊ต ํ์๋ค์ ๋ฒํธ๋ฅผ ๋ํ๋ด๋ ์ ์ ๋ฐฐ์ด number๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ํ์๋ค ์ค ์ผ์ด์ฌ๋ฅผ ๋ง๋ค ์ ์๋ ๋ฐฉ๋ฒ์ ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํ์ธ์.
์ ํ ์ฌํญ
- 3 ≤ number์ ๊ธธ์ด ≤ 13
- -1,000 ≤ number์ ๊ฐ ์์ ≤ 1,000
- ์๋ก ๋ค๋ฅธ ํ์์ ์ ์ ๋ฒํธ๊ฐ ๊ฐ์ ์ ์์ต๋๋ค.
์ ์ถ๋ ฅ ์
number | result |
[-2, 3, 0, 2, -5] | 2 |
[-3, -2, -1, 0, 1, 2, 3] | 5 |
[-1, 1, -1, 1] | 0 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
- ๋ฌธ์ ์์์ ๊ฐ์ต๋๋ค.
์ ์ถ๋ ฅ ์ #2
- ํ์๋ค์ ์ ์ ๋ฒํธ ์ (-3, 0, 3), (-2, 0, 2), (-1, 0, 1), (-2, -1, 3), (-3, 1, 2) ์ด ์ผ์ด์ฌ๊ฐ ๋ ์ ์์ผ๋ฏ๋ก, 5๋ฅผ return ํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #3
์ผ์ด์ฌ๊ฐ ๋ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
๋ด๊ฐ ์์ฑํ ์ฝ๋
class Solution {
public int solution(int[] number) {
int answer = 0;
// ์ธ ์ซ์์ ํฉ์ด 0์ธ ๊ฒฝ์ฐ์ ์๋ฅผ ์ฐพ๊ธฐ ์ํด ์ค์ฒฉ ๋ฐ๋ณต๋ฌธ ์ฌ์ฉ
for (int i = 0; i < number.length - 2; i++) {
for (int j = i + 1; j < number.length - 1; j++) {
for (int k = j + 1; k < number.length; k++) {
int sum = number[i] + number[j] + number[k]; // ์ธ ์ซ์์ ํฉ ๊ณ์ฐ
if (sum == 0) {
answer++; // ํฉ์ด 0์ด๋ผ๋ฉด ์นด์ดํธ ์ฆ๊ฐ
}
}
}
}
return answer;
}
}
์ฝ๋ ์ค๋ช
- int answer = 0 : ์ธ ์ซ์๋ฅผ ํฉํ ํ 0์ผ ๊ฒฝ์ฐ์ ์๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๋ณ์ answer๋ฅผ ์์ฑํ๊ณ ์ด๊ธฐ๊ฐ์ 0์ผ๋ก ์ค์ ํ๋ค.
- ์ค์ฒฉ ๋ฐ๋ณต๋ฌธ์ ํตํด 3๊ฐ์ ์ซ์๋ฅผ ์ ํํ๋ค.
- for (int i = 0; i < number.length - 2; i++) { } : ์ฒซ ๋ฒ์งธ ๋ฐ๋ณต๋ฌธ. ์ฒซ ๋ฒ์งธ ์ซ์์ ์์น๋ฅผ ์ ํ๊ธฐ ์ํ ๋ฐ๋ณต๋ฌธ์ด๋ค. 0๋ถํฐ number.length-3๊น์ง์ ๋ฒ์๋ฅผ ๋๋ค. ์ด๋ ๊ฒ ์ค์ ํด์ผ ๋ค์ ๋ ์ซ์์ ์ซ์๋ฅผ ์ ํํ ์ ์๋ ์ฌ์ ๊ฐ ์๊ธด๋ค.
- for (int j = i+1; i < number.length-1; j++) { } : ๋ ๋ฒ์งธ ๋ฐ๋ณต๋ฌธ. ๋ ๋ฒ์งธ ์ซ์์ ์์น๋ฅผ ์ ํ๊ธฐ ์ํ ๋ฐ๋ณต๋ฌธ์ด๋ค. i๋ณด๋ค ๋ค์ ์๋ ์ซ์๋ฅผ ์ ํํ๊ธฐ ์ํด์ i+1๋ถํฐ ์์ํ๊ณ ๋ง์ง๋ง ๋ ์๋ฆฌ ์ ๊น์ง์ ๋ฒ์๋ฅผ ๋๋ค.
- for (int k = j+1; k < number.length; k++) { } : ์ธ ๋ฒ์งธ ๋ฐ๋ณต๋ฌธ. ์ธ ๋ฒ์งธ ์ซ์์ ์์น๋ฅผ ์ ํ๊ธฐ ์ํ ๋ฐ๋ณต๋ฌธ์ด๋ค. j๋ณด๋ค ๋ค์ ์๋ ์ซ์๋ฅผ ์ ํํ๊ธฐ ์ํด์ j+1๋ถํฐ ์์ํ๊ณ ๋ฐฐ์ด์ ๋๊น์ง ๋ฒ์๋ฅผ ๋๋ค.
- int sum = number[i] + number[j] + number[k] : ์ ํ๋ ์ธ ์ซ์์ ํฉ์ ๊ณ์ฐํด์ sum์ ์ ์ฅํ๋ค.
- if (sum == 0) { answer++ } : if๋ฌธ์ ์ฌ์ฉํด์ ๋ง์ฝ sum์ ๊ฐ์ด 0์ด๋ผ๋ฉด ์ธ ์ซ์์ ํฉ์ด 0์ด๋ผ๋ ๋ป์ด๋ฏ๋ก answer๋ฅผ 1 ์ฆ๊ฐ์ํจ๋ค.
- for (int k = j+1; k < number.length; k++) { } : ์ธ ๋ฒ์งธ ๋ฐ๋ณต๋ฌธ. ์ธ ๋ฒ์งธ ์ซ์์ ์์น๋ฅผ ์ ํ๊ธฐ ์ํ ๋ฐ๋ณต๋ฌธ์ด๋ค. j๋ณด๋ค ๋ค์ ์๋ ์ซ์๋ฅผ ์ ํํ๊ธฐ ์ํด์ j+1๋ถํฐ ์์ํ๊ณ ๋ฐฐ์ด์ ๋๊น์ง ๋ฒ์๋ฅผ ๋๋ค.
- for (int j = i+1; i < number.length-1; j++) { } : ๋ ๋ฒ์งธ ๋ฐ๋ณต๋ฌธ. ๋ ๋ฒ์งธ ์ซ์์ ์์น๋ฅผ ์ ํ๊ธฐ ์ํ ๋ฐ๋ณต๋ฌธ์ด๋ค. i๋ณด๋ค ๋ค์ ์๋ ์ซ์๋ฅผ ์ ํํ๊ธฐ ์ํด์ i+1๋ถํฐ ์์ํ๊ณ ๋ง์ง๋ง ๋ ์๋ฆฌ ์ ๊น์ง์ ๋ฒ์๋ฅผ ๋๋ค.
'ํ๋ก๊ทธ๋๋จธ์ค > ์๊ณ ๋ฆฌ์ฆ ํ์ด(Java)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค_์ต์์ง์ฌ๊ฐํ (0) | 2024.11.30 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค_ํฌ๊ธฐ๊ฐ ์์ ๋ถ๋ถ ๋ฌธ์์ด (0) | 2024.11.29 |
ํ๋ก๊ทธ๋๋จธ์ค_์ด์ํ ๋ฌธ์ ๋ง๋ค๊ธฐ (0) | 2024.11.26 |
ํ๋ก๊ทธ๋๋จธ์ค_3์ง๋ฒ ๋ค์ง๊ธฐ (0) | 2024.11.25 |
ํ๋ก๊ทธ๋๋จธ์ค_์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์ (0) | 2024.11.25 |