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