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μΈ μ°μλ μ«μμ ν©μ λͺκ°μΈμ§λ₯Ό μ μ μλ€.