λ¬Έμ μμΈ μ€λͺμ£Όμ΄μ§ μ μ A, B, Nμ λν΄, λ³μ xμ yκ° κ°κ° Aμ Bλ‘ μ΄κΈ°νλ μνμμ x += y λλ y += x μ°μ°μ λ°λ³΅μ μΌλ‘ μννμ¬, xλ y μ€ νλμ κ°μ΄ Nμ μ΄κ³Όν λκΉμ§ μ΅μ λͺ λ²μ μ°μ°μ΄ νμνμ§ κ³μ°νλ νλ‘κ·Έλ¨μ μμ±
C, C++, Python, JavaΒ λ±μ μΈμ΄μλΒ +=Β μ°μ°μκ° μλ€.Β μ μν λ³μΒ x, yκ° μμ λΒ βx += yβλ₯Ό νλ©΄Β xμ μ μ₯λ κ°μ΄Β (κΈ°μ‘΄μΒ xμ μ μ₯λμ΄ μλ κ°) + (κΈ°μ‘΄μΒ yμ μ μ₯λμ΄ μλ κ°)μΌλ‘ λ°λλ€.
νμ¬Β xμ μ μ₯λ κ°μΒ A, yμ μ μ₯λ κ°μΒ Bμ΄λ€.Β λΉμ μΒ βx += yβΒ λλΒ βy += xβΒ μ°μ°μ μνλ μμλλ‘ μνλ λ§νΌ μννμ¬, xλΒ yΒ λ μ€ νλ μ΄μμ μ μ₯λ κ°μ΄Β NΒ μ΄κ³Όκ° λκ² νλ €κ³ νλ€.Β μ°μ°μ ν©μ³μ μ΅μ λͺ λ² μνν΄μΌ νλμ§ κ³μ°νλ νλ‘κ·Έλ¨μ μμ±νλΌ.
μ λ ₯
첫 λ²μ§Έ μ€μ ν μ€νΈ μΌμ΄μ€μ μΒ Tκ° μ£Όμ΄μ§λ€.
κ° ν μ€νΈ μΌμ΄μ€λ ν κ°μ μ€λ‘ μ΄λ£¨μ΄μ§λ€.Β κ° μ€μλ μΈ κ°μ μ μ

μ΄ κ³΅λ°± νλμ©μ μ¬μ΄λ‘ λκ³ μ£Όμ΄μ§λ€.
ν μ€νΈ μΌμ΄μ€μ κ°μλΒ 600,000κ° μ΄μμΌλ‘ μλΉν λ§μμ μ μνλΌ.
μΆλ ₯
κ° ν μ€νΈ μΌμ΄μ€λ§λ€,Β ν μ€μ νλμ©Β xλΒ yΒ λ μ€ νλ μ΄μμ μ μ₯λ κ°μ΄Β NΒ μ΄κ³Όκ° λκ² νκΈ° μν΄Β βx += yβ, βy += xβΒ μ°μ°μ μ΅μ λͺ λ² μνν΄μΌ νλμ§ μΆλ ₯νλ€.
| μ λ ₯ | μΆλ ₯ |
|---|---|
| 5 1 2 2 1 2 3 1 2 4 1 2 5 10 7 1293 | 1 2 2 3 11 |
package D2;
// SWEA D2 21425λ² "+=" λ¬Έμ νμ΄
import java.util.*;
public class N21425 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int T = scan.nextInt();
Sol sol = new Sol();
for (int i = 0; i < T; i++) {
int A = scan.nextInt();
int B = scan.nextInt();
int N = scan.nextInt();
System.out.println(sol.solution(A, B, N));
}
}
}
class Sol {
public int solution(int A, int B, int N) {
int cnt = 0;
while (true) {
if (A >= B) {
B = A + B;
cnt++;
if (B > N) {
return cnt;
}
}else if(A < B) {
A = A + B;
cnt++;
if (A > N) {
return cnt;
}
}
}
}
}
Aμ B μ€μμ λν΄μ§λ κ°μ μ νν λ λ ν° κ°μΌλ‘ μ νν΄ λν΄μΌ += μ°μ°μ μ΅μλ‘ μνν΄ Nμ κ°μ μ΄κ³Όμν¬μ μμ κ²μ΄λΌκ³ μκ°νλ€.
package D2;
//SWEA D2 21425λ² "+=" λ¬Έμ νμ΄ κ°μ
import java.util.*;
public class N21425_b {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int T = scan.nextInt();
StringBuilder result = new StringBuilder();
for(int i = 0; i < T; i++) {
int A = scan.nextInt();
int B = scan.nextInt();
int N = scan.nextInt();
result.append(solution(A, B, N)).append("\n");
}
System.out.print(result);
scan.close();
}
public static int solution(int A, int B, int N) {
int cnt = 0;
while(Math.max(A, B) <= N) {
if (A < B) {
A += B;
}else {
B += A;
}
cnt++;
}
return cnt;
}
}
StringBuilder μ¬μ©
κ²°κ³Όλ₯Ό StringBuilderμ λμ ν΄ System.out.printλ‘ νλ²μ μΆλ ₯νλ€.
μ΄λ ν
μ€νΈμΌμ΄μ€κ° λ§μ λ μ
μΆλ ₯ μλλ₯Ό κ°μ ν΄μ€λ€.
Math.max μ¬μ©
μ΄μ μ½λλ while(true) μ½λλ‘ λ°λ³΅λ¬Έ λ΄λΆμ 쑰건문μ λ£μ΄μ λ°λ³΅ μ§ν μ¬λΆλ₯Ό κ²°μ νμλλ° λ§€ λ°λ³΅μμ Math.maxλ₯Ό μ¬μ©ν΄ Aμ B μ€ λ ν° κ°μ΄ Nμ λλμ§ νμΈνλ€.
μ΄λ‘μ¨, λ°λ³΅λ¬Έ λ΄λΆ μ‘°κ±΄λ¬Έμ΄ κ°κ²°ν΄μ‘κ³ , λΆνμν else if μ μ μ κ±°ν μ μλ€.
μ€μΊλ μμ ν΄μ
scan.closeλ₯Ό ν΅ν΄ μ€μΊλ κ°μ²΄λ₯Ό λ«μμ€λ€.
λ©λͺ¨λ¦¬ μ¬μ© μ΅μ ν
λ§€λ² μλ‘μ΄ κ°μ²΄λ₯Ό μμ±νμ§ μκ³ solution λ©μλλ₯Ό staticμΌλ‘ μ μΈν΄ μ¬μ©ν΄ λ©λͺ¨λ¦¬ κ΄λ¦¬λ₯Ό λ μ½κ² νλ€.