01-10 04:27
Recent Posts
Recent Comments
관리 메뉴

miinsun

[BAEKJOON] λ°±μ€€ DP 2193 :: 이친수 JAVA λ³Έλ¬Έ

Algorithm/Baekjoon

[BAEKJOON] λ°±μ€€ DP 2193 :: 이친수 JAVA

miinsun 2022. 3. 13. 03:03

 

πŸ’¬  문제 μ„€λͺ…

0κ³Ό 1둜만 이루어진 수λ₯Ό μ΄μ§„μˆ˜λΌ ν•œλ‹€.
μ΄λŸ¬ν•œ μ΄μ§„μˆ˜ 쀑 νŠΉλ³„ν•œ μ„±μ§ˆμ„ κ°–λŠ” 것듀이 μžˆλŠ”λ°, 이듀을 이친수(pinary number)라 ν•œλ‹€.
μ΄μΉœμˆ˜λŠ” λ‹€μŒμ˜ μ„±μ§ˆμ„ λ§Œμ‘±ν•œλ‹€.

1. μ΄μΉœμˆ˜λŠ” 0으둜 μ‹œμž‘ν•˜μ§€ μ•ŠλŠ”λ‹€.
2. μ΄μΉœμˆ˜μ—μ„œλŠ” 1이 두 번 μ—°μ†μœΌλ‘œ λ‚˜νƒ€λ‚˜μ§€ μ•ŠλŠ”λ‹€.

즉, 11을 λΆ€λΆ„ λ¬Έμžμ—΄λ‘œ 갖지 μ•ŠλŠ”λ‹€. 예λ₯Ό λ“€λ©΄ 1, 10, 100, 101, 1000, 1001 등이 μ΄μΉœμˆ˜κ°€ λœλ‹€.
ν•˜μ§€λ§Œ 0010101μ΄λ‚˜ 101101은 각각 1, 2번 κ·œμΉ™μ— μœ„λ°°λ˜λ―€λ‘œ μ΄μΉœμˆ˜κ°€ μ•„λ‹ˆλ‹€.

N(1 ≤ N ≤ 90)이 μ£Όμ–΄μ‘Œμ„ λ•Œ, N자리 이친수의 개수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

 

πŸ”¨  μž…μΆœλ ₯ 예

μž…λ ₯ 

  • 첫째 쀄에 N이 주어진닀.

 

좜λ ₯

  • 첫째 쀄에 N자리 이친수의 개수λ₯Ό 좜λ ₯ν•œλ‹€.

 

예제 μž…λ ₯ 1)

3

 

예제 좜λ ₯ 1)

2

 

 

​

πŸ’»  Main.java

  • DPλ₯Ό μ΄μš©ν•΄ 문제λ₯Ό ν‘Όλ‹€. dy[n]에 λ©”λͺ¨μ΄μ œμ΄μ…˜ν•œλ‹€.
  • n = 4κΉŒμ§€ 직접 그리며 κ·œμΉ™μ„ 찾을 수 μžˆμ—ˆλ‹€. κ·œμΉ™μ€ λ‹€μŒκ³Ό κ°™λ‹€. dy[i] = dy[i-1] + dy[i-2]
  • dy[1]κ³Ό dy[2]λ₯Ό 직접 μ„€μ •ν•΄μ€€λ‹€.
/* λ°±μ€€ DP - 2193 :: 이친수 */
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		long [] dy = new long[n + 1];
		
		dy[0] = 0;
		dy[1] = 1; 
		
		for(int i = 2; i <= n; i++) 
		{ 
			dy[i] = dy[i - 2] + dy[i - 1]; 
		} 

		System.out.println(dy[n]);
		sc.close();
	}
}
Comments