Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

13-alstjr7437 #43

Merged
merged 3 commits into from
Mar 4, 2024
Merged

13-alstjr7437 #43

merged 3 commits into from
Mar 4, 2024

Conversation

alstjr7437
Copy link
Member

@alstjr7437 alstjr7437 commented Feb 29, 2024

πŸ”— 문제 링크

μ‰¬μš΄ 계단 수
λ³€ν˜• 계단 수

βœ”οΈ μ†Œμš”λœ μ‹œκ°„

40λΆ„

✨ μˆ˜λ„ μ½”λ“œ

μš°μ„ μ μœΌλ‘œ 계단 수λ₯Ό κ·Έλƒ₯ ν•˜λ‚˜μ”© λ‹€ μ μ–΄λ³΄λ©΄μ„œ μ–΄λ–€ 점화식을 μ„ΈμšΈ 수 μžˆμ„κΉŒ 생각을 ν–ˆμŠ΅λ‹ˆλ‹€!
μ²˜μŒμ—λŠ” 1번이 μ–΄λ–»κ²Œ 해도 μ•ˆλ‚˜μ™”μ–΄μ„œ 인터넷을 슬쩍 μ°Έκ³ ν•΄λ³΄λ‹ˆ
0λ²ˆμ— 1λ²ˆμ— μžˆλŠ”κ±Έ κ°€μ Έμ™€μ„œ μ‚¬μš©ν•˜λ©΄ λ‚˜μ™”μŠ΅λ‹ˆλ‹€!!

image




μœ„ 사진과 같이 μ–΄λ–€ μ ν™”μ‹μœΌλ‘œ λ“€μ–΄κ°ˆμ§€ μ„Έμ› κ³ 
i -> 계단 수 j -> μ‹œμž‘ν•˜λŠ” 숫자
dp[i][j]

  1. j == 0μΌλ•Œ μ „ κ³„λ‹¨μ˜ 1으둜 μ‹œμž‘ν•˜λŠ” 뢀뢄을 λ“€κ³ μ˜΅λ‹ˆλ‹€.
  2. j 1λΆ€ν„° 8κΉŒμ§€ μ „ κ³„λ‹¨μ˜ μ™Όμͺ½κ³Ό 였λ₯Έμͺ½μ˜ 수λ₯Ό λ”ν•©λ‹ˆλ‹€.
  3. j == 9μΌλ•Œ μ „ κ³„λ‹¨μ˜ 8을 κ°€μ Έμ˜΅λ‹ˆλ‹€.



dp[3][3]을 예둜 λ“€λ©΄
3의 κ³„λ‹¨μˆ˜μ˜ 3으둜 μ‹œμž‘ν•˜λŠ”κ²Œ λͺ‡κ°œ μžˆλŠ”μ§€ λ“€μ–΄κ°‘λ‹ˆλ‹€.
2번으둜 λ“€κ³ μ™€μ„œ 2측의 2의 수(2) + 2측의 4의 수(2) = 4둜 λ“€μ–΄κ°€κ²Œ λ©λ‹ˆλ‹€.




κ·Έλ ‡κ²Œ μœ„μ™€ 같이 계산을 ν•˜μ—¬μ„œ n의 1번 μΈλ±μŠ€λΆ€ν„° 9번 μΈλ±μŠ€κΉŒμ§€ λ”ν•΄μ„œ λ‚˜λˆ μ€¬μŠ΅λ‹ˆλ‹€.

전체 μ½”λ“œ

n = int(input())
dp = [[1] * 10 for _ in range(n+1)]

for i in range(2, n+1):
    for j in range(10):
        if j == 0:
            dp[i][j] = dp[i-1][j+1]
        elif j == 9:
            dp[i][j] = dp[i-1][j-1]
        else :
            dp[i][j] = dp[i-1][j-1] + dp[i-1][j+1]

print(sum(dp[n][1:10]) % 1_000_000_000)

πŸ“š μƒˆλ‘­κ²Œ μ•Œκ²Œλœ λ‚΄μš©

DP의 점화식 μ„Έμš°λŠ” 뢀뢄이 0번 μΈλ±μŠ€λ„ μ°Έ μ€‘μš”ν•˜λ‹€κ³  κΉ¨λ‹«μŠ΅λ‹ˆλ‹€...
κ·Έλƒ₯ 없이 1λ²ˆλΆ€ν„° μ„Έμ› λ‹€κ°€ μ‹œκ°„μ„ 20λΆ„ 정도 버린 것 κ°™λ„€μš”..

μ‹œκ°„μ΄ λœλ‹€λ©΄ λ³€ν˜• 계단 μˆ˜λ„ 풀어보고 PR에 μΆ”κ°€ν•˜κ² μŠ΅λ‹ˆλ‹€..
λ”°λ‘œ 20뢄을 생각해봐도 아이디어가 μ•ˆλ– μ˜¬λΌμ„œ λ§‰ν˜”λ„€μš”...

Copy link
Collaborator

@SeongHoonC SeongHoonC left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dp 인지 λͺ¨λ₯΄κ³  ν•œμ°Έ κ³ λ―Όν•˜λ‹€κ°€ λΆ„λ₯˜ 보고 ν’€μ—ˆλ„€μš”.. ν‘Ό 방법은 λ˜‘κ°™μ•„μš”!
근데 이게 μˆ«μžκ°€ λ„ˆλ¬΄ μ»€μ„œ Long 으둜 바꿔도 μ•ˆλ˜κΈΈλž˜ κ°’ μ—…λ°μ΄νŠΈ ν• λ•Œλ„ λ‚˜λ¨Έμ§€λ₯Ό λ„£λ„λ‘ν•΄μ„œ ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹Ή.

fun main() {
    val br = BufferedReader(InputStreamReader(System.`in`))
    val n = br.readLine().toInt()

    val dp: Array<Array<Long>> = Array(n) { Array(10) { 1L } }
    dp[0][0] = 0

    for (i in 1 until n) {
        for (j in 0..9) {
            dp[i][j] = when (j) {
                0 -> dp[i - 1][1]
                9 -> dp[i - 1][8]
                else -> dp[i - 1][j + 1] + dp[i - 1][j - 1] % 1_000_000_000
            }
        }
    }
    println(dp[n - 1].sumOf { it } % 1_000_000_000)
}

elif j == 9:
dp[i][j] = dp[i-1][j-1]
else :
dp[i][j] = dp[i-1][j-1] + dp[i-1][j+1]
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

μ—¬κΈ°μ„œ 이 점화식에 μ™œ λ‚˜μ˜€λŠ”μ§€ 이해가 λ˜μ§€ μ•Šμ•„μš” ..γ…œγ…œ

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

jκ°€ 0μΌλ•ŒλŠ” 였λ₯Έμͺ½ μœ„μ— μžˆλŠ”κ±Έ κ°€μ Έμ˜€κ³ 
jκ°€ 9μΌλ•ŒλŠ” μ™Όμͺ½ μœ„μ— μžˆλŠ”κ±Έ κ°€μ Έμ˜€κ³ 
κ·Έ λ‘˜λ‹€ μ•„λ‹λ•ŒλŠ” μ™Όμͺ½ μœ„, 였λ₯Έμͺ½ μœ„λ₯Ό κ°€μ Έμ™€μ„œ λ”ν•˜λ©΄ λ˜μ„œ κ·Έλ ‡μŠ΅λ‹ˆλ‹€!

@alstjr7437 alstjr7437 removed the request for review from fnzksxl March 4, 2024 03:51
@alstjr7437 alstjr7437 merged commit add879d into main Mar 4, 2024
10 checks passed
@alstjr7437 alstjr7437 deleted the 13-alstjr7437 branch March 4, 2024 03:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants