우규이인우윀
Eager To Learn 🌌
우규이인우윀
전체 방문자
였늘
μ–΄μ œ

λΈ”λ‘œκ·Έ 메뉴

  • 🏑 ν™ˆ
  • πŸš€ κΉƒν—ˆλΈŒ
  • β›… νƒœκ·Έ ν΄λΌμš°λ“œ
  • λΆ„λ₯˜ 전체보기 (217)
    • πŸ‘¨πŸ»β€πŸ’» PS (170)
      • JAVA (82)
      • MYSQL (1)
      • Docker (2)
      • PYTHON (24)
      • LeetCode 150 (39)
      • Algorithm 기법 (1)
      • 바킹독 (21)
    • λΈ”λ‘œκ·Έ 이사 (0)
    • Error (1)
    • CS (15)
      • DataBase (2)
      • OS (7)
      • Network (1)
      • Spring (1)
      • 자료ꡬ쑰 (3)
      • Java (1)
    • Learned (7)
      • Spring (7)
    • κ°œλ°œμ„œμ  (15)
      • 가상 λ©΄μ ‘ μ‚¬λ‘€λ‘œ λ°°μš°λŠ” λŒ€κ·œλͺ¨ μ‹œμŠ€ν…œ 섀계 기초 (1)
      • 였브젝트 - 쑰영호 (7)
      • μΉœμ ˆν•œ SQL νŠœλ‹ (7)
    • 회고 (2)
hELLO Β· Designed By μ •μƒμš°.
우규이인우윀
πŸ‘¨πŸ»β€πŸ’» PS/JAVA

[JAVA] λ°±μ€€ 11726번 【2Γ—n 타일링】

πŸ‘¨πŸ»β€πŸ’» PS/JAVA

[JAVA] λ°±μ€€ 11726번 【2Γ—n 타일링】

2022. 9. 5. 21:18


 

λ¨Όμ €, 문제의 원리λ₯Ό μ΄ν•΄ν•΄μ•Όν•œλ‹€.

 

λ‹€μ΄λ‚˜λ―Ή ν”„λ‘œκ·Έλž˜λ° 문제둜, Dp[n] 은 2*n μ‚¬κ°ν˜•μ˜ 경우의 수λ₯Ό λ©”λͺ¨μ΄μ œμ΄μ…˜ ν•΄μ•Όν•œλ‹€.

 

2*1 μ‚¬κ°ν˜•μ˜ 경우 1κ°€μ§€, 2*2 μ‚¬κ°ν˜•μ˜ 경우 2κ°€μ§€κ°€ λ‚˜μ˜¨λ‹€.

 

μœ„ 그림에 따라, 2*3 μ‚¬κ°ν˜•μ„ 생각해보면, 제일 였λ₯Έμͺ½μ— 2*1 μ‚¬κ°ν˜•μ„ μΆ”κ°€ν•˜κ³ λ‚˜μ„œ 남은 2*2 μ‚¬κ°ν˜•μ„ μ–΄λ–»κ²Œ μ±„μšΈμ§€ 고민해보면 λ˜λŠ”λ°, κ³ λ―Όν•  ν•„μš”κ°€ μ—†λ‹€. 이미 2*2 μ‚¬κ°ν˜•μ„ μ±„μš°λŠ” 경우의 수λ₯Ό μ•Œκ³ μžˆκΈ° λ•Œλ¬Έμ΄λ‹€.

 

λ˜ν•œ, 1*2 μ‚¬κ°ν˜• λ‘κ°œλ₯Ό = λͺ¨μ–‘μœΌλ‘œ 놓고, 남은 2*1 μ‚¬κ°ν˜•μ„ μ–΄λ–»κ²Œ μ±„μšΈμ§€ 고민해보면 λ˜λŠ”λ°, 이 μ—­μ‹œ, 2*1 μ‚¬κ°ν˜•μ„ μ±„μš°λŠ” 경우의 수λ₯Ό μ•Œκ³  있기 λ•Œλ¬Έμ—, λ”ν•΄μ£ΌκΈ°λ§Œ ν•˜λ©΄λœλ‹€. 

 

즉, ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄μ˜ ν˜•νƒœλ₯Ό 띄고 μžˆμŒμ„ νŒŒμ•…ν•  수 μžˆλ‹€.

 

2*3 μ‚¬κ°ν˜•μ„ μ±„μš°λŠ” 경우의 μˆ˜λŠ” 2*2 μ‚¬κ°ν˜• 경우의 수 + 2*1 μ‚¬κ°ν˜• 경우의 μˆ˜μž„μ„ μ•Œ 수 μžˆλ‹€. 

 

λ§ˆμ°¬κ°€μ§€λ‘œ, 2*4 μ‚¬κ°ν˜•μ˜ 경우, 2*3 μ‚¬κ°ν˜• 경우의 수 + 2*2 μ‚¬κ°ν˜• 경우의 수 μž„μ„ μ•Œ 수 μžˆλ‹€.

 

μ›λ¦¬λ§Œ, νŒŒμ•…ν•˜λ©΄ 맀우 μ‰¬μš΄ λ¬Έμ œμ˜€λ‹€.

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		
		int n = scanner.nextInt();
		int [] Dp = new int[n+1];
		Dp[0]=1; // 2*1 μ‚¬κ°ν˜• 경우의 수
		Dp[1]=2; // 2*2 μ‚¬κ°ν˜• 경우의 수
		for(int i=2;i<n;i++) {
			Dp[i]=(Dp[i-1]+Dp[i-2])%10007;  // λ¬Έμ œμ—μ„œ 10007둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€ 값을 μš”κ΅¬
		}
		System.out.println(Dp[n-1]); //2*n μ‚¬κ°ν˜• 경우의 수
	}
}

 

    'πŸ‘¨πŸ»β€πŸ’» PS/JAVA' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [JAVA] λ°±μ€€ 9095번 【1, 2, 3 λ”ν•˜κΈ°γ€‘
    • [JAVA] λ°±μ€€ 11727번 【2Γ—n 타일링 2】
    • [JAVA] λ°±μ€€ 1463번 【1둜 λ§Œλ“€κΈ°γ€‘
    • [JAVA] λ°±μ€€ 2522번 【별 찍기 - 12】
    우규이인우윀
    우규이인우윀
    개발자 κΏˆλ‚˜λ¬΄

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”

    단좕킀

    λ‚΄ λΈ”λ‘œκ·Έ

    λ‚΄ λΈ”λ‘œκ·Έ - κ΄€λ¦¬μž ν™ˆ μ „ν™˜
    Q
    Q
    μƒˆ κΈ€ μ“°κΈ°
    W
    W

    λΈ”λ‘œκ·Έ κ²Œμ‹œκΈ€

    κΈ€ μˆ˜μ • (κΆŒν•œ μžˆλŠ” 경우)
    E
    E
    λŒ“κΈ€ μ˜μ—­μœΌλ‘œ 이동
    C
    C

    λͺ¨λ“  μ˜μ—­

    이 νŽ˜μ΄μ§€μ˜ URL 볡사
    S
    S
    맨 μœ„λ‘œ 이동
    T
    T
    ν‹°μŠ€ν† λ¦¬ ν™ˆ 이동
    H
    H
    단좕킀 μ•ˆλ‚΄
    Shift + /
    ⇧ + /

    * λ‹¨μΆ•ν‚€λŠ” ν•œκΈ€/영문 λŒ€μ†Œλ¬Έμžλ‘œ 이용 κ°€λŠ₯ν•˜λ©°, ν‹°μŠ€ν† λ¦¬ κΈ°λ³Έ λ„λ©”μΈμ—μ„œλ§Œ λ™μž‘ν•©λ‹ˆλ‹€.