πŸ‘¨πŸ»‍πŸ’» PS

    [JAVA] λ°±μ€€ 1699번 γ€μ œκ³±μˆ˜μ˜ 합】

    이 문제λ₯Ό μ²˜μŒμ—, λ‹¨μˆœν•˜κ²Œ νŠΉμ • μˆ«μžμ™€ κ°€μž₯ κ°€κΉŒμš΄ 제곱수λ₯Ό κ΅¬ν•˜κ³ , νŠΉμ • μˆ«μžμ™€ 제곱수의 차이에 ν•΄λ‹Ήν•˜λŠ” dp값을 λ”ν•˜λŠ” λ°©μ‹μœΌλ‘œ 접근을 ν–ˆμ—ˆλ‹€. 예λ₯Ό λ“€μ–΄, μ΄ˆκΈ°κ°’μœΌλ‘œ dp[1]= 1, dp[2]=2(1+1μ΄λ―€λ‘œ 2개) , dp[3]=3(1+1+1 μ΄λ―€λ‘œ 3개) λ₯Ό μ„€μ •ν•œ λ’€, λ§Œμ•½ 18이라면, 18κ³Ό κ°€μž₯ κ°€κΉŒμš΄ μ œκ³±μˆ˜λŠ” 16이기 λ•Œλ¬Έμ—, dp[18]=1(16μ΄λ―€λ‘œ 갯수 ν•˜λ‚˜ μ†Œμš”)+dp[2] 와 같은 λ°©μ‹μœΌλ‘œ 말이닀. 즉, 이와 같은 방식을 μ‚¬μš©ν•˜λ©΄ 18 = 4의 제곱 + 1의 제곱 + 1의제곱 = 총 갯수 3κ°œκ°€ λ‚˜μ˜€λŠ”λ°, 사싀 18 = 3의제곱 + 3의제곱 = 2개 κ°€ 더 μ΅œμ†Œκ°―μˆ˜μ΄λ‹€. κ·Έλž˜μ„œ, λ‹€λ₯Έ λ°©λ²•μœΌλ‘œ λ‹€μ‹œ μ ‘κ·Όν•΄μ•Ό ν–ˆλ‹€. λ¨Όμ €, νŠΉμ • μˆ«μžμ—μ„œ 제곱수λ₯Ό μΆ”μΆœν•˜λŠ” 것은 ν•„μˆ˜μ μ΄λ‹€. ν•˜μ§€..

    [JAVA] λ°±μ€€ 2579번 【계단 였λ₯΄κΈ°γ€‘

    [JAVA] λ°±μ€€ 2156번 【포도주 μ‹œμ‹γ€‘ 포도주가 λ¬Έμ œμ— λ‚˜μ™€μžˆλŠ” 예제처럼 μžˆλ‹€κ³  κ°€μ •ν•΄λ³΄μž. Dp[n]은 ν•΄λ‹Ή n번째 κΉŒμ§€, 포도주λ₯Ό μ΅œλŒ€λ‘œ λ§ˆμ‹  λŸ‰μ„ 기둝할 것이닀. Dp[1] 은 λ‹Ήμ—°ν•˜κ²Œλ„ wine[1]이닀. 1μž” 밖에 μ—†μœΌλ‹ˆ, 1μž”μ„ λ§ˆμ‹ κ²Œ μ΅œλŒ€ yinq.tistory.com 계단 였λ₯΄κΈ° λ¬Έμ œλŠ” 2156 포도주 μ‹œμ‹κ³Ό λΉ„μŠ·ν•œ 문제라고 λ³Ό 수 μžˆλ‹€. μ–΄μ©Œλ©΄ 더 μ‰¬μš΄ λ¬Έμ œμ΄λ‹€. 포도주 μ‹œμ‹ 문제의 경우 λ§ˆμ§€λ§‰ μž”μ„ κΌ­ λ§ˆμ…”μ•Ό ν•œλ‹€λŠ” 쑰건은 μ—†μ§€λ§Œ, κ³„λ‹¨μ˜€λ₯΄κΈ° λ¬Έμ œλŠ” λ§ˆμ§€λ§‰ 계단은 κΌ­ λ°Ÿμ•„μ•Ό ν•œλ‹€λŠ” 쑰건이 μžˆλ‹€. dp배열에 각 계단 μœ„μΉ˜μ— μ˜¬λžμ„ λ•Œ, 얻을 수 μžˆλŠ” 점수의 μ΅œλŒ“κ°’μ„ 기둝할 것이닀. λ§ˆμ§€λ§‰ 계단은 κΌ­ λ°Ÿμ•„μ•Ό ν•œλ‹€λŠ” 쑰건 λ•Œλ¬Έμ—, dp[i]κ°’μ—λŠ” array[i]값은 무쑰건 포함이 λ˜μ–΄μ•Ό..

    [JAVA] λ°±μ€€ 1912번 【연속합】

    이제 λΆ€λΆ„μˆ˜μ—΄ κ΅¬ν•˜λŠ” λ¬Έμ œλŠ” 해닡이 잘 λ‚˜μ˜€λŠ” 것 κ°™λ‹€. 이 λ¬Έμ œλŠ”, λˆ„μ ν•©μ΄ -값이 λ˜μ§€ μ•ŠλŠ”ν•œ κ²Œμ†ν•΄μ„œ λ”ν•΄μ„œ dp값에 μ €μž₯ν•˜κ³ , μŒμˆ˜κ°€ 되면 μ–΄λ–€μˆ˜λ₯Ό 더해도, μ•ˆλ”ν•˜λŠ”κ²Œ 이읡인 상황이 되기 λ•Œλ¬Έμ—, λˆ„μ ν•©μ΄ μŒμˆ˜κ°€ λ˜λŠ” ν•΄λ‹Ή 인덱슀의 dp값을 0으둜 μž…λ ₯μ‹œν‚€κ²Œλ” κ΅¬ν˜„ν•˜μ˜€λ‹€. 예제문제λ₯Ό 톡해 μ‚΄νŽ΄λ³΄λ„λ‘ ν•˜μž. μ΅œμ’… dp배열은 μœ„μ™€ 같이 μƒμ„±λ˜κ³ , dpλ°°μ—΄μ—μ„œ κ°€μž₯ 큰 μ›μ†Œλ₯Ό μΆ”μΆœν•˜λ©΄ λλ‚œλ‹€! 그리고 λͺ¨λ“  μ›μ†Œκ°€ 0보닀 μž‘μ€ 경우, λˆ„μ ν•©μ˜ μ΅œλŒ“κ°’μ€ μ›λž˜ λ°°μ—΄μ˜ 음수 μ›μ†Œλ“€ 쀑 κ°€μž₯ 큰값이 λœλ‹€. 이 뢀뢄에 μœ μ˜ν•˜λ©΄ λœλ‹€. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import j..

    [JAVA] λ°±μ€€ 11054번 【가μž₯ κΈ΄ 바이토닉 λΆ€λΆ„ μˆ˜μ—΄γ€‘

    바이토닉 λΆ€λΆ„μˆ˜μ—΄μ˜ 길이λ₯Ό κ΅¬ν•˜κΈ° μœ„ν•΄μ„œλŠ”, μ–΄λ–€ μΈλ±μŠ€μ— μœ„μΉ˜ν•œ 수λ₯Ό κΈ°μ€€μœΌλ‘œ μ•žμ—μ„œλΆ€ν„° μ‹œμž‘ν•˜λŠ” κ°€μž₯ κΈ΄ μ¦κ°€ν•˜λŠ” λΆ€λΆ„μˆ˜μ—΄μ˜ 길이와 λ’€μ—μ„œλΆ€ν„° μ‹œμž‘ν•˜λŠ” κ°€μž₯ κΈ΄ λΆ€λΆ„μˆ˜μ—΄μ˜ 길이λ₯Ό μ•Œμ•„μ•Όκ² λ‹€ 생각이 λ“€μ—ˆλ‹€. [JAVA] λ°±μ€€ 11053번 【가μž₯ κΈ΄ μ¦κ°€ν•˜λŠ” λΆ€λΆ„ μˆ˜μ—΄γ€‘ dp 배열을 μƒμ„±ν•˜μ—¬ dp[i] λŠ” Array[i]κΉŒμ§€μ˜ μ›μ†Œλ“€λ‘œ λ§Œλ“€ 수 μžˆλŠ” λΆ€λΆ„ μˆ˜μ—΄ 길이의 μ΅œλŒ“κ°’μ„ μž…λ ₯ν•  것이닀. 그리고 λΆ€λΆ„ μˆ˜μ—΄μ˜ κΈΈμ΄λŠ” μ΅œμ†Œ 1 값을 κ°€μ§€λ―€λ‘œ, dp의 λͺ¨λ“  μ›μ†ŒλŠ” λ””ν΄νŠΈ 1을 가진 yinq.tistory.com μ›λ¦¬λŠ” μœ„ λ¬Έμ œμ™€ λ™μΌν•˜λ‹€. λŒ€μ‹  μ•žμ—μ„œ λΆ€ν„° μ‹œμž‘ν•˜λŠ” 증가 λΆ€λΆ„μˆ˜μ—΄μ„ 기둝해놓을 dpAscλ°°μ—΄κ³Ό λ’€μ—μ„œ λΆ€ν„° μ‹œμž‘ν•˜λŠ” 증가 λΆ€λΆ„μˆ˜μ—΄μ„ 기둝해놓을 dpDsc λ‘κ°œμ˜ dp배열을 μƒμ„±ν•˜μ˜€λ‹€. 그리고 d..

    [JAVA] λ°±μ€€ 11722번 【가μž₯ κΈ΄ κ°μ†Œν•˜λŠ” λΆ€λΆ„ μˆ˜μ—΄γ€‘

    [JAVA] λ°±μ€€ 11053번 【가μž₯ κΈ΄ μ¦κ°€ν•˜λŠ” λΆ€λΆ„ μˆ˜μ—΄γ€‘ dp 배열을 μƒμ„±ν•˜μ—¬ dp[i] λŠ” Array[i]κΉŒμ§€μ˜ μ›μ†Œλ“€λ‘œ λ§Œλ“€ 수 μžˆλŠ” λΆ€λΆ„ μˆ˜μ—΄ 길이의 μ΅œλŒ“κ°’μ„ μž…λ ₯ν•  것이닀. 그리고 λΆ€λΆ„ μˆ˜μ—΄μ˜ κΈΈμ΄λŠ” μ΅œμ†Œ 1 값을 κ°€μ§€λ―€λ‘œ, dp의 λͺ¨λ“  μ›μ†ŒλŠ” λ””ν΄νŠΈ 1을 가진 yinq.tistory.com κ°€μž₯ κΈ΄ μ¦κ°€ν•˜λŠ” λΆ€λΆ„ μˆ˜μ—΄μ—μ„œ 쑰건을 Array[i]

    [JAVA] λ°±μ€€ 11055번 【가μž₯ 큰 증가 λΆ€λΆ„ μˆ˜μ—΄γ€‘

    dp 배열을 μƒμ„±ν•˜κ³  dp[i]μ—λŠ” i 번째 μ›μ†Œκ°€ ν˜•μ„±ν•˜κ³  μžˆλŠ” λΆ€λΆ„ μˆ˜μ—΄μ˜ 합을 넣을 것이닀. 즉, dp[i] λŠ” μˆ˜μ—΄μ˜ i번째 μ›μ†ŒκΉŒμ§€ κ°€μž₯ 큰 λΆ€λΆ„μˆ˜μ—΄μ˜ 합을 기둝할 것이닀. 예λ₯Ό λ“€λ©΄ A = [1 2 3 10 5 14] κ°€ μžˆλ‹€κ³  ν• λ•Œ dp = [1 3(1+2) 6(1+2+3) 16(1+2+3+10) 11(1+2+3+5) 30(1+2+3+10+14)] = [1 3 6 11 16 30] 이 λ˜λŠ” 것이닀. μ—¬κΈ°μ„œ μ€‘μ μ μœΌλ‘œ 봐야할 ν¬μΈνŠΈλŠ”, dp[5]λ₯Ό κ΅¬ν• λ•Œμ΄λ‹€. λΆ€λΆ„ μˆ˜μ—΄μ˜ 경우의 μˆ˜κ°€ 2가지 μ‘΄μž¬ν•œλ‹€. [1 2 3 5 14 ] 즉, 총합이 25κ°€ λ˜λŠ” κ²½μš°μ™€ [1 2 3 10 14] 즉, 총합이 30이 λ˜λŠ” 경우의 μˆ˜κ°€ μ‘΄μž¬ν•œλ‹€. μ±„μš°λŠ” 방법은, 30보닀 μž‘μ€ μ›μ†Œλ₯Ό λ°œκ²¬ν•˜λ©΄, κ·Έ μ›μ†Œκ°€ κ°–κ³ ..

    [JAVA] λ°±μ€€ 11053번 【가μž₯ κΈ΄ μ¦κ°€ν•˜λŠ” λΆ€λΆ„ μˆ˜μ—΄γ€‘

    dp 배열을 μƒμ„±ν•˜μ—¬ dp[i] λŠ” Array[i]κΉŒμ§€μ˜ μ›μ†Œλ“€λ‘œ λ§Œλ“€ 수 μžˆλŠ” λΆ€λΆ„ μˆ˜μ—΄ 길이의 μ΅œλŒ“κ°’μ„ μž…λ ₯ν•  것이닀. 그리고 λΆ€λΆ„ μˆ˜μ—΄μ˜ κΈΈμ΄λŠ” μ΅œμ†Œ 1 값을 κ°€μ§€λ―€λ‘œ, dp의 λͺ¨λ“  μ›μ†ŒλŠ” λ””ν΄νŠΈ 1을 κ°€μ§„λ‹€λŠ” 사싀은 μ•Œ 수 μžˆλ‹€. dpλ₯Ό μ±„μš°λŠ” λ©”μ»€λ‹ˆμ¦˜μ„ μ•Œμ•„λ³΄μž. μœ„ κ·Έλ¦Όκ³Ό 같이, dp 6번째 μ›μ†Œλ₯Ό μ±„μ›Œμ•Ό ν•˜λŠ” 상황이라고 μƒκ°ν•΄λ³΄μž. Array의 첫번째 μ›μ†Œ 10은 40보닀 μž‘μœΌλ―€λ‘œ, λΆ€λΆ„μˆ˜μ—΄μ˜ κΈΈμ΄λŠ” 10이 가진 dpκ°’ 1보닀 1이 큰 2둜 μ—…λ°μ΄νŠΈ ν•  수 μžˆλ‹€. Array의 λ‘λ²ˆμ§Έ μ›μ†Œ 20은 40보닀 μž‘μœΌλ―€λ‘œ, λΆ€λΆ„μˆ˜μ—΄μ˜ κΈΈμ΄λŠ” 20이 가진 dpκ°’ 2보닀 1이 큰 3으둜 μ—…λ°μ΄νŠΈ ν•  수 μžˆλ‹€. Array의 μ„Έλ²ˆμ§Έ μ›μ†Œ 30은 40보닀 μž‘μœΌλ―€λ‘œ, λΆ€λΆ„μˆ˜μ—΄μ˜ κΈΈμ΄λŠ” 30이 가진 dpκ°’ 3보닀..

    [JAVA] λ°±μ€€ 2156번 【포도주 μ‹œμ‹γ€‘

    포도주가 λ¬Έμ œμ— λ‚˜μ™€μžˆλŠ” 예제처럼 μžˆλ‹€κ³  κ°€μ •ν•΄λ³΄μž. Dp[n]은 ν•΄λ‹Ή n번째 κΉŒμ§€, 포도주λ₯Ό μ΅œλŒ€λ‘œ λ§ˆμ‹  λŸ‰μ„ 기둝할 것이닀. Dp[1] 은 λ‹Ήμ—°ν•˜κ²Œλ„ wine[1]이닀. 1μž” 밖에 μ—†μœΌλ‹ˆ, 1μž”μ„ λ§ˆμ‹ κ²Œ μ΅œλŒ€κ°’μ΄ λœλ‹€. Dp[2] μ—­μ‹œ λ‹Ήμ—°ν•˜κ²Œ wine[1]+wine[2] κ°€ λœλ‹€. μ—°μ†μœΌλ‘œ 3μž”μ„ λ§ˆμ‹œλŠ”κ±΄ μ•ˆλ˜μ§€λ§Œ, 2μž”μ„ λ§ˆμ‹œλŠ” 건 ν—ˆμš©μ΄ λœλ‹€. κ·Έλ ‡λ‹€λ©΄ Dp[3]은 μ–΄λ–»κ²Œ μ±„μšΈκΉŒ 3가지 Caseκ°€ μžˆμ„ 수 μžˆλ‹€. Case.1 이미 1번째 μž”κ³Ό 2번째 μž”μ„ λ§ˆμ‹  경우 3번째 μž”μ€ λ§ˆμ‹€ 수 μ—†κ³  Dp[3]은 더 λ§ˆμ‹  와인이 μ—†μœΌλ‹ˆ, 변화없이 wine[1] +wine[2] = 16이 될 것이닀. Case.2 1번째 μž”κ³Ό 3번째 μž”μ„ λ§ˆμ‹€ 경우, Dp[3]은 wine[1] + wine[3] = 19κ°€ ..

    [JAVA] λ°±μ€€ 9465번 γ€μŠ€ν‹°μ»€γ€‘

    μ μˆ˜ν‘œ Sticker λ°°μ—΄ Sκ°€ μœ„μ™€ 같이 μžˆλ‹€κ³  μƒκ°ν•΄λ³΄μž. 그리고 Sticker λ°°μ—΄κ³Ό 크기가 같은 Dp 배열이 μžˆλ‹€κ³  μƒκ°ν•΄λ³΄μž. Dp 배열은 ν•΄λ‹Ή μœ„μΉ˜λ₯Ό λœ―μ—ˆμ„ λ•Œ, 얻을 수 μžˆλŠ” μ΅œλŒ€μ˜ 점수λ₯Ό 기둝해 λ‚˜κ°ˆ 것이닀. λ¨Όμ € Dp[0][1] κ³Ό Dp[1][1]은 κ°„λ‹¨ν•˜λ‹€. ν•΄λ‹Ήν•˜λŠ” 뢀뢄을 λœ―μ—ˆμ„ λ•Œ, ν•΄λ‹Ήν•˜λŠ” 점수만 νšλ“ν•  수 μžˆμ„ 것이닀. κ·Έλ ‡λ‹€λ©΄, λ‘λ²ˆμ§Έ μ—΄λΆ€ν„°λŠ” μ μˆ˜κ°€ μ–΄λ–»κ²Œ 될까? λ…Έλž€ 바탕이 μŠ€ν‹°μ»€λ₯Ό λœ―μ€ 뢀뢄이라고 μƒκ°ν• λ•Œ, S[0][2] λ₯Ό λœ―μ—ˆμ„ λ•Œ 얻을 수 μžˆλŠ” 졜고 μ μˆ˜λŠ”, μƒμ‹μ μœΌλ‘œ ν•˜λ‚˜λ§Œ λœ―λŠ”κ²ƒμ΄ μ•„λ‹Œ, μΈμ ‘ν•˜μ§€ μ•Šμ€ S[1][1]κΉŒμ§€ λœ―μ€ 점수의 합일 것이닀. 즉 DpλŠ” ν•΄λ‹Ή μœ„μΉ˜λ₯Ό λœ―μ—ˆμ„ λ•Œ 얻을 수 μžˆλŠ” μ΅œλŒ€ 점수λ₯Ό κΈ°λ‘ν•˜λŠ” 것이기 λ•Œλ¬Έμ—, μœ„μ™€ 같이 기둝할 수 μžˆλ‹€. 3번..

    [JAVA] λ°±μ€€ 2193번 γ€μ΄μΉœμˆ˜γ€‘

    νŒ¨ν„΄μ„ νŒŒμ•…ν•˜κΈ° μœ„ν•΄μ„œ 트리ꡬ쑰둜 κ·Έλ €λ³΄μ•˜λ‹€. κ·Έλž¬λ”λ‹ˆ, μœ„μ™€ 같이 νŒŒμ•…ν•  수 μžˆμ—ˆκ³ , ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄μ΄κ΅¬λ‚˜ κΉ¨λ‹¬μ•˜λ‹€. Dp[1] = 1 Dp[2] = 1 Dp[3] = 2 Dp[4] = 3 Dp[5] = 5 경우의 수λ₯Ό μ μ–΄λ³΄κΈ°λ§Œ ν–ˆμ–΄λ„, ν”Όλ³΄λ‚˜μΉ˜μž„μ„ μ˜ˆμΈ‘ν–ˆμ„ 것 κ°™λ‹€..γ…Žγ…Ž μ•„λ¬΄νŠΌ Dp[i] = Dp[i-1]+Dp[i-2] 점화식을 μ‚¬μš©ν•˜λ©΄ λ¬Έμ œλŠ” 맀우 κ°„λ‹¨ν•˜κ²Œ ν•΄κ²°λœλ‹€! import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int N = scanner.nextInt(); long [] Dp = new long[N+2]; Dp[..

    [JAVA] λ°±μ€€ 11057번 γ€μ˜€λ₯΄λ§‰ μˆ˜γ€‘

    νŒ¨ν„΄μ„ μ°ΎκΈ° μœ„ν•΄ 경우의 수λ₯Ό μ‚΄νŽ΄λ³΄μž. 0으둜 μ‹œμž‘ν•˜λŠ” 것도 ν—ˆμš©ν•˜κ³ , 00 μ΄λ‚˜ 11 κ³Ό 같이 같은 μˆ«μžκ°€ μ—°μ†λœ κ²½μš°μ—λ„ μ˜€λ¦„μ°¨μˆœμœΌλ‘œ κ°„μ£Όν•˜λ―€λ‘œ μœ„μ™€ 같은 경우의 μˆ˜κ°€ μžˆμ„ 수 μžˆλ‹€. μ΄λ ‡κ²Œ 색을 μΉ ν•˜λ©΄ νŒ¨ν„΄μ΄ 보일 것이닀. 즉 N자리 i둜 μ‹œμž‘ν•˜λŠ” 였λ₯΄λ§‰ μˆ˜λŠ” N-1자리 i둜 μ‹œμž‘ν•˜λŠ” 였λ₯΄λ§‰μˆ˜λΆ€ν„° N-1자리 9둜 μ‹œμž‘ν•˜λŠ” 였λ₯΄λ§‰μˆ˜λ₯Ό λ”ν•˜λ©΄ λœλ‹€. Dp[i][j] = Dp[i-1][j] + ····· Dp[i-1][9] μœ„ 식을 ν‘œν˜„ν•˜λ©΄ λ˜λŠ”λ°, λ‚˜λŠ” for문을 3개 μ‚¬μš©ν•˜μ—¬ ν‘œν˜„ν•˜μ˜€λ‹€. for (int i = 2; i

    [JAVA] λ°±μ€€ 10844번 γ€μ‰¬μš΄ 계단 μˆ˜γ€‘

    λ¨Όμ €, νŒ¨ν„΄μ„ μ°ΎκΈ° μœ„ν•΄ 경우의 수λ₯Ό μ‚΄νŽ΄λ³΄μž 0으둜 μ‹œμž‘ν•˜λŠ” μˆ˜λ„ 경우의 수λ₯Ό λ”°μ Έλ³΄μ•˜κ³ , κ²°κ³Όλ₯Ό 좜λ ₯ν•  λ•Œ λ”ν•΄μ£Όμ§€λ§Œ μ•ŠμœΌλ©΄ λ¬Έμ œκ°€ μ—†λ‹€. λ©”λͺ¨μ΄μ œμ΄μ…˜μ„ μœ„ν•œ, Dp[자릿수][μ‹œμž‘ν•˜λŠ”μˆ˜] 둜 2차원 배열을 μ„ μ–Έν•΄μ€€λ‹€. 0으둜 μ‹œμž‘ν•˜λŠ” 경우 3자리수둜 λ§Œλ“  κ³„λ‹¨μ˜ 수λ₯Ό μ‚΄νŽ΄λ³΄λ©΄, 0으둜 μ‹œμž‘ν•˜λŠ” μˆ˜λŠ” 010 κ³Ό 012 κ°€ μžˆλ‹€. 0을 λ•Œμ–΄λ†“κ³  보면, 10 κ³Ό 12 μž„μ„ μ•Œ 수 있고 0으둜 μ‹œμž‘ν•˜λŠ” 3자리 계단 μˆ˜λŠ” 1둜 μ‹œμž‘ν•˜λŠ” 2자리 κ³„λ‹¨μ˜ μˆ˜μž„μ„ μ•Œ 수 μžˆλ‹€. 즉, 0으둜 μ‹œμž‘ν•˜λŠ” N자리 계단 μˆ˜λŠ” 1둜 μ‹œμž‘ν•˜λŠ” N-1자리 κ³„λ‹¨μ˜ μˆ˜μ™€ κ°™λ‹€. Dp[N][0]=Dp[N-1][1] 9둜 μ‹œμž‘ν•˜λŠ” 경우 3자리수둜 λ§Œλ“  κ³„λ‹¨μ˜ 수λ₯Ό μ‚΄νŽ΄λ³΄λ©΄, 9둜 μ‹œμž‘ν•˜λŠ” μˆ˜λŠ” 987 κ³Ό 989κ°€ μžˆλ‹€. 9λ₯Ό 떼어놓고 보..

    [JAVA] λ°±μ€€ 9095번 【1, 2, 3 λ”ν•˜κΈ°γ€‘

    μœ„μ™€ 같은 원리λ₯Ό νŒŒμ•…ν•˜λ©΄ 쉽닀. 4 = 3 +1 둜 ν‘œν˜„ν•  수 있고, 3을 ν‘œν˜„ν•˜λŠ” 경우의 μˆ˜λŠ” 이미 μ•Œκ³ μžˆλ‹€. 4 = 2 + 2 둜 ν‘œν˜„ν•  수 있고, 2λ₯Ό ν‘œν˜„ν•˜λŠ” 경우의 μˆ˜λŠ” 이미 μ•Œκ³ μžˆλ‹€. 4= 1 + 3 둜 ν‘œν˜„ν•  수 있고, 1을 ν‘œν˜„ν•˜λŠ” 경우의 수 μ—­μ‹œ μ•Œκ³  μžˆλ‹€. 즉, n일 λ•Œ n=(n-1) +1 n =(n-2) +2 n =(n-3) +3 둜 ν‘œν˜„ν•  수 있고 n을 ν‘œν˜„ν•˜λŠ” 경우의 μˆ˜λŠ” n-1을 ν‘œν˜„ν•˜λŠ” 경우의 수 + n-2을 ν‘œν˜„ν•˜λŠ” 경우의 수 + n-3을 ν‘œν˜„ν•˜λŠ” 경우의 수 μž„μ„ μ•Œ 수 μžˆλ‹€. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Sc..

    [JAVA] λ°±μ€€ 11727번 【2×n 타일링 2】

    11726번 λ¬Έμ œμ™€ ꡉμž₯히 μœ μ‚¬ν•˜λ‹€. [JAVA] λ°±μ€€ 11726번 【2×n 타일링】 λ¨Όμ €, 문제의 원리λ₯Ό μ΄ν•΄ν•΄μ•Όν•œλ‹€. λ‹€μ΄λ‚˜λ―Ή ν”„λ‘œκ·Έλž˜λ° 문제둜, Dp[n] 은 2*n μ‚¬κ°ν˜•μ˜ 경우의 수λ₯Ό λ©”λͺ¨μ΄μ œμ΄μ…˜ ν•΄μ•Όν•œλ‹€. 2*1 μ‚¬κ°ν˜•μ˜ 경우 1가지, 2*2 μ‚¬κ°ν˜•μ˜ 경우 2가지가 λ‚˜μ˜¨λ‹€. μœ„ κ·Έλ¦Ό yinq.tistory.com 11726 λ²ˆμ„ λ¨Όμ € μ΄ν•΄ν•˜λŠ” 것이 μ’‹λ‹€. 차이점이라고 ν•œλ‹€λ©΄, 2*2 μ‚¬κ°ν˜•λ„ μ‚¬μš©ν•˜μ—¬ μ±„μš°κΈ° λ•Œλ¬Έμ—, 2*3 μ‚¬κ°ν˜• 경우의 μˆ˜μ—μ„œ, 2*1 μ‚¬κ°ν˜• 경우의 μˆ˜κ°€ 2번 μžˆλŠ” 것과 같은 μ΄μΉ˜κ°€ λœλ‹€. 즉 Dp[n] = Dp[n-1] +2*Dp[n-2] μ‹μœΌλ‘œ 점화식을 κ΅¬μ„±ν•˜λ©΄ λœλ‹€! import java.util.Scanner; public class Main { public stati..

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

    λ¨Όμ €, 문제의 원리λ₯Ό μ΄ν•΄ν•΄μ•Όν•œλ‹€. λ‹€μ΄λ‚˜λ―Ή ν”„λ‘œκ·Έλž˜λ° 문제둜, 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 μ‚¬κ°ν˜•μ„ μ±„μš°λŠ” 경우의 μˆ˜λŠ”..