2023. 10. 19. 19:54ใ์ธํ๋ฐ/์๋ฐ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด ์ ๋ฌธ : ์ฝ๋ฉํ ์คํธ ๋๋น
https://hyejin.tistory.com/1223
-> ์ด์ ๋ฌธ์ ํ์ด
5. ์ฐ์๋ ์์ฐ์์ ํฉ
์ค๋ช
N์ ๋ ฅ์ผ๋ก ์์ ์ ์ N์ด ์ ๋ ฅ๋๋ฉด 2๊ฐ ์ด์์ ์ฐ์๋ ์์ฐ์์ ํฉ์ผ๋ก ์ ์ N์ ํํํ๋ ๋ฐฉ๋ฒ์ ๊ฐ์ง์๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
๋ง์ฝ N=15์ด๋ฉด
7+8=15
4+5+6=15
1+2+3+4+5=15
์ ๊ฐ์ด ์ด 3๊ฐ์ง์ ๊ฒฝ์ฐ๊ฐ ์กด์ฌํ๋ค.
์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ ์์ ์ ์ N(7<=N<1000)์ด ์ฃผ์ด์ง๋๋ค.
์ถ๋ ฅ
์ฒซ ์ค์ ์ด ๊ฒฝ์ฐ์๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
์์ ์ ๋ ฅ 1
15
์์ ์ถ๋ ฅ 1
3
๋ฌธ์ ํ์ด 1
public int solution(int n) {
int answer = 0, sum;
for (int i = 1; i <= n; i++) {
sum = i;
for (int j = i + 1; j <= n - i; j++) {
sum += j;
if (sum == n) {
answer++;
break;
} else if (sum > n) {
break;
}
}
}
return answer;
}
๐ฉ๐ปโ๐ป : ๋๋ ์ฐ์ ์ ๋ฒ ๋ฌธ์ ํ์ด์ ๋์ผํ๊ฒ ํ์๋ค. ์ด์ค for ๋ฌธ์ ์ด์ฉํด์ ์ฒซ๋ฒ์งธ for๋ฌธ์์๋ ๋ํ ์ฒซ๋ฒ์งธ ์๋ฅผ ๊ตฌํ๊ณ , ๋๋ฒ์งธ for๋ฌธ์์๋ ๊ทธ ์ฒซ๋ฒ์งธ์ ๋ค์๋ถํฐ ๊ฐ์ ๋ํ๋๋ฐ ์ด๋ sum์ด n๊ณผ ๊ฐ์ด ๊ฐ๋ค๋ฉด answer ์ +1 ํด์ฃผ๊ณ break ํ๊ณ ๋ค์ ์ฒซ๋ฒ์งธ ์๋ก ๋์ด๊ฐ๊ณ ,,,
sum์ด n๋ณด๋ค ํฌ๋ฉด ๋ฐ๋ก break๋ฌธ์ผ๋ก ๋์ค๋๋ก ํ๋ค.
๋ฌธ์ ํ์ด 2
public int solution2(int n) {
int answer = 0, sum =0;
int lt = 0;
int m = n / 2 + 1;
int[] arr = new int[m];
for (int i = 0; i < m; i++) {
arr[i] = i + 1;
}
for (int rt = 0; rt < m; rt++) {
sum += arr[rt];
if (sum == n) {
answer++;
}
while (sum >= n) {
sum -= arr[lt++];
if (sum == n) {
answer++;
}
}
}
return answer;
}
๐พ : ๊ฐ์ฌ๋์ ์ฐ์ ๋ฐฐ์ด์ ์๋ก ํ๋ ๋ง๋ค์๋๋ฐ ์ด๋ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ n / 2 + 1 ๋ก ์ค์ ํ๋ค. ๊ทธ ์ด์ ๋ ์ด์ฐจํผ n / 2 + 1 ๋ค์ ์ฐ์๋ ๊ฐ๋ค์ ๋ํด๋ดค์ n ๊ฐ์ ๋์ด๊ฐ๊ธฐ ๋๋ฌธ์ ๊ตฌํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ ๋ค์ ๋ฐ๋ณต๋ฌธ์ ํตํด 1 ~ n ๊ฐ์ ๋ฐฐ์ด์ ๋ด์์ค๋ค.
๊ทธ ๋ค์์ ์ด์ ๋ฌธ์ ํ์ด์ ๋์ผํ๊ฒ ์งํํ๋๋ฐ ๋จผ์ sum ์ arr[rt] ๊ฐ์ ๋ํ๋ค์, sum๊ณผ n ๊ฐ์ ๋น๊ตํ๊ณ , ๊ฐ์ผ๋ฉด answer +1 n๋ณด๋ค ํฌ๋ฉด while๋ฌธ์ ๋๋ฉด์ sum์์ arr[lt] ๊ฐ์ ๋นผ์ค ๋ค์ lt + 1 ํด์ค๋ค. ๊ทธ ๋ค์ ์ด sum ์ ๋ค์ n๊ณผ ๋น๊ตํ๊ณ ... ์ด๋ ๊ฒ ๋ฐ๋ณตํ๋ค๋ณด๋ฉด sum ์ด n์ธ ์ฐ์๋ ์ซ์์ ํฉ์ ๋ช๊ฐ์ธ์ง๋ฅผ ์ ์ ์๋ค.