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

17-Redish03 #73

Merged
merged 4 commits into from
Mar 6, 2024
Merged

17-Redish03 #73

merged 4 commits into from
Mar 6, 2024

Conversation

Redish03
Copy link
Collaborator

@Redish03 Redish03 commented Mar 1, 2024

πŸ”— 문제 링크

νŒŒλ„λ°˜ μˆ˜μ—΄

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

20min

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

문제 이해

image
μœ„ κ·Έλ¦Όκ³Ό 같이 μ‚Όκ°ν˜•μ΄ λ‚˜μ„  λͺ¨μ–‘μœΌλ‘œ 놓여져 μžˆλ‹€. 첫 μ‚Όκ°ν˜•μ€ μ •μ‚Όκ°ν˜•μœΌλ‘œ λ³€μ˜ 길이가 1이닀.

  • κ·Έ λ‹€μŒμœΌλ‘œ, λ‚˜μ„ μ—μ„œ κ°€μž₯ κΈ΄ λ³€μ˜ 길이λ₯Ό k 라 ν–ˆμ„ λ•Œ, κ·Έ 변에 길이가 k 인 μ •μ‚Όκ°ν˜•μ„ μΆ”κ°€ ν•œλ‹€.

  • νŒŒλ„λ°˜ μˆ˜μ—΄ P(N) 은 λ‚˜μ„ μ— μžˆλŠ” μ •μ‚Όκ°ν˜• λ³€μ˜ 길이이닀. P(1)λΆ€ν„° P(10)κΉŒμ§€ μˆ˜μ—΄μ˜ μˆ˜λŠ”

  • 1, 1, 1, 2, 2, 3, 4, 5, 7, 9 이닀.

  • N이 주어지면, P(N)을 κ΅¬ν•˜μ‹œμ˜€.

문제 μ ‘κ·Ό

  • 문제 μ½μœΌλ©΄μ„œ λ©λ•Œλ¦¬λ‹€κ°€..λ¬Έμ œμ—μ„œ μ£Όμ–΄μ§€λŠ” μˆ˜μ—΄ 첫 10 μˆ«μžμ—μ„œ μ΅μˆ™ν•œ μˆ˜λ“€μ΄ λ³΄μ˜€λ‹€. 1, 1, 2, 3, 5, ... 이 μˆ˜μ—΄μ΄ ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄μΈλ°, 그와 μ•½κ°„ λΉ„μŠ·ν•˜λ‹€λŠ” λŠλ‚Œμ„ λ°›μ•˜λ‹€. 그러고 μ˜ˆμ‹œλ‘œ μ€€ 10κΉŒμ§€μ˜ 수λ₯Ό λ³΄λ‹ˆ κ·œμΉ™μ„±μ΄ λ³΄μ˜€λ‹€.
  • κ·Έλž˜μ„œ λ­”κ°€ λ”ν•˜λ©΄ λ‹€μŒ 항이 λΏ…ν•˜κ³  λ‚˜μ˜€μ§€ μ•Šμ„κΉŒ?λΌλŠ” 생각에 λ¬΄μž‘μ • λ”ν–ˆλ”λ‹ˆ, λ‚˜λ¦„λŒ€λ‘œ 점화식이 λ‚˜μ™”λ‹€.
    P(N) = P(N - 2) + P(N - 3) μ΄μ˜€λ‹€.

κ·Έλž˜λ„ μ›λ¦¬λŠ” μ•Œκ³  κ°€μ•Ό ν•œλ‹€ μƒκ°ν•΄μ„œ...
μž‘μ€ λΆ€λΆ„ λΆ€ν„° μ‘°κΈˆμ”© ν™•μΈν•΄λ³΄μž.!

  • N = 6일 λ•Œ
    image
    • μœ„ κ·Έλ¦Όμ—μ„œ, N = 5μ˜€μ„ λ•Œ κ°€μž₯ κΈ΄ λ‚˜μ„ μ˜ κΈΈμ΄λŠ”, ν•‘ν¬μƒ‰μ˜ 2와 1이 합쳐진 길이가 3이닀.
    • 그럼 N = 6일 λ•ŒλŠ” 길이가 3인 μ •μ‚Όκ°ν˜•μ΄ 생길 것이닀.
    • μœ„μ˜ μ‚Όκ°ν˜•μ˜ λ†’μ΄λŠ”, 흰색에 길이가 2와 핑크색에 길이가 1인 μ •μ‚Όκ°ν˜•μ˜ 높이λ₯Ό ν•©ν•œ 것과 κ°™λ‹€. 그럼 길이가 2와 1을 ν•©ν•œ 것과 κ°™λ‹€.
  • 이 뿐만이 μ•„λ‹ˆκ³ , N = 7일 λ•Œλ„ κ°™λ‹€.
    image
    • 길이가 4인 μ •μ‚Όκ°ν˜•μ€ 길이가 2인 흰색 μ •μ‚Όκ°ν˜•κ³Ό 핑크색 μ •μ‚Όκ°ν˜•μ˜ 높이와 κ°™λ‹€. 그럼 2+2 = 4둜, 길이가 4인 μ •μ‚Όκ°ν˜•μ΄ λ‚˜μ˜¨λ‹€.
  • N = 8μΌλ•Œλ„,
    image
    • 핑크색 2와 흰색 3이 λ”ν•΄μ Έμ„œ , 길이가 5인 μ •μ‚Όκ°ν˜•μ΄ λ§Œλ“€μ–΄μ‘Œλ‹€.

μœ„μ™€ 같은 μ›λ¦¬λ‘œ DPλ₯Ό μ μš©μ‹œμΌœ μ½”λ“œλ₯Ό 지 수 μžˆλ‹€.

  • 점화식은 μœ„μ™€ 같이 P(N) = P(N - 2) + P(N - 3) 이닀. P(N - 2)λ“€μ˜ 연산을 쀄이기 μœ„ν•΄μ„œ DPλ₯Ό μ‚¬μš©ν•œλ‹€.

μž¬κ·€ν•¨μˆ˜ μ½”λ“œ πŸ‘¨β€πŸ’»

long long dp[101] = {
    0,
};

long long rec(int N)
{
    if (dp[N] != 0)
    {
        return dp[N];
    }
    if (N == 1 || N == 2 || N == 3)
    {
        dp[N] = 1;
        return 1;
    }

    dp[N] = rec(N - 2) + rec(N - 3);
    return dp[N];
}
  • dp λ°°μ—΄μ—λŠ” P(N)을 μ €μž₯ν•œλ‹€. λ§Œμ•½ P(N)을 μ €μž₯을 ν•œλ²ˆ ν–ˆμœΌλ©΄ μž¬κ·€λ₯Ό 더 λŒλ¦¬μ§€ μ•Šκ³ , κ·Έ 수λ₯Ό λ°”λ‘œ return ν•œλ‹€.

  • N = 1, 2, 3μΌλ•Œλ‘œ 베이슀 μΌ€μ΄μŠ€λ₯Ό 지정해쀀닀.

  • κ·Έ μ™Έ (ν•œ λ²ˆλ„ 돌린적 μ—†λŠ” μˆ˜μ΄κ±°λ‚˜, N = 1, 2, 3이 μ•„λ‹Œ 경우) μ—λŠ” 점화식을 ν†΅ν•΄μ„œ dp에 μ €μž₯ν•œλ‹€.

  • 기초λ₯Ό λ‹€μ§ˆμˆ˜ μžˆλŠ” 문제 μ˜€λ˜λ“―,,, long long λ•Œλ¬Έμ— 어라,,,ν•œλ²ˆ 해쀬닀.

πŸ“š λŠλ‚€ 점

λ‹€λ“€ 2달 λ™μ•ˆ 쉬지 μ•Šκ³  ν•˜μ‹ λ‹€κ³  κ³ μƒν•˜μ…¨μŠ΅λ‹ˆλ‹€..! 저도 μ—¬λŸ¬λͺ¨λ‘œ 많이 배우고 κ°”μŠ΅λ‹ˆλ‹€ πŸ˜„
λ§ˆμ§€λ§‰μ΄λΌ 힘 λΉΌλ €κ³  μ’€ μ‰¬μš΄ 문제 κ³¨λžμŠ΅λ‹ˆλ‹€. DP의 핡심 λ‚΄μš©μ΄μž 거의 ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄ κΈ‰ 문제라...양심에 μͺΌλ” 찔리긴 ν•©λ‹ˆλ‹€ γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ… γ… 

개발이 λ§žλŠ”μ§€λŠ” μ’€ 더 생각해봐야 ν•  것 κ°™μŠ΅λ‹ˆλ‹€ γ…Žγ…Žγ…‹γ…Ž μ½”λ”© μžμ²΄λŠ” μž¬λ°‹μ–΄ν•˜λŠ” 것 κ°™μ§€λ§Œ... 적성도 κ·Έλ ‡κ³  재λŠ₯이 μ’€ μ—†λŠ” 것 같기도 ν•˜λ„€μš” γ…‹γ…Žγ…‹γ…‹ κ·Έλ ‡λ‹€κ³  κ°œλ°œμ„ λ†“μžλ‹ˆ μ§€κΈˆ μ˜¬ν•΄λ‘œ 거의 8λ…„ μ§Έ κ³΅λΆ€ν•˜κ³  μžˆλŠ” 학문을 λ†“λŠ”λ‹€λŠ” 것은 쉽지 μ•Šμ€ 것 κ°™μŠ΅λ‹ˆλ‹€ 🀣 🀣
μƒˆλ‘œμš΄ νŒ€μ›λ“€μ΄λž‘ ν•œλ‹€κ³  κ±±μ • 많이 ν–ˆμ—ˆκ³  성격이 μ•ˆ 맞으면 μ–΄μ©Œλ‚˜ κ³ λ―Ό ν–ˆμ—ˆλŠ”λ°, κ·Έλž˜λ„ 잘 맞고 또 ν†‘λ°©μ—μ„œ μ–˜κΈ°ν•˜λ©΄μ„œ 재밌게 ν–ˆμ—ˆλ˜ 것 κ°™μŠ΅λ‹ˆλ‹€ μ—¬λŸ¬λΆ„λ“€ λ•λΆ„μž…λ‹ˆλ‹€. μ—΄μ •μ μœΌλ‘œ μ°Έμ—¬ν•΄μ£Όμ…”μ„œ κ°μ‚¬ν–ˆμ—ˆμŠ΅λ‹ˆλ‹€ λ‹€μŒλ²ˆμ— 볼일 있으면 κΌ­ λ΄μš”...! (5μ›” μž…λŒ€ μ˜ˆμ •)

Copy link
Member

@miniron-v miniron-v left a comment

Choose a reason for hiding this comment

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

두 달간 고생 λ§ŽμœΌμ…¨μŠ΅λ‹ˆλ‹€! 5μ›” μž…λŒ€λΌλ‹ˆ... λͺΈ κ±΄κ°•νžˆ λ¬΄νƒˆν•˜κ²Œ λ‹€λ…€μ˜€μ‹œκΈ° λ°”λžλ‹ˆλ‹€πŸ˜’

μ§„λ‘œμ— λŒ€ν•΄ 고민이 λ§Žκ² μ§€λ§Œ, κ΅°λŒ€μ—μ„œ μ°¨λΆ„νžˆ 생각을 정리할 수 μžˆμœΌλ‹ˆ 계속 κ³ λ―Όν•΄λ³΄μ‹œκΈ° λ°”λžλ‹ˆλ‹€. μ–Έμ œλ‚˜ κ°€μž₯ ν–‰λ³΅ν•œ 길을 κ±·κΈΈ λ°”λž˜μš”!

Comment on lines +9 to +23
long long rec(int N)
{
if (dp[N] != 0)
{
return dp[N];
}
if (N == 1 || N == 2 || N == 3)
{
dp[N] = 1;
return 1;
}

dp[N] = rec(N - 2) + rec(N - 3);
return dp[N];
}
Copy link
Member

Choose a reason for hiding this comment

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

νƒ‘λ‹€μš΄ ν˜•μ‹μ˜ DPλ„€μš”! μž¬κ·€λ₯Ό μ΄μš©ν•˜λŠ” 만큼 κ°„κ²°ν•˜κ³  짧은 μ½”λ“œμ˜ μž₯점, 느린 단점이 있죠. λ§Œμ•½ λͺ‡ ꡬ간 κ±΄λ„ˆλ›Έ 수 μžˆλ‹€λ©΄ 더 κΈˆμƒμ²¨ν™”κ² μ£ . (κ·Έλž˜λ„ 보톡 λ‹€ μ±„μš°λŠ” 바텀업이 더 λΉ λ₯΄κΈ΄ ν•©λ‹ˆλ‹€.)

이번 점화식은, 잘 생각해보면 κ²°κ΅­ 거의 λͺ¨λ“  칸이 μ±„μ›Œμ§„λ‹€λŠ” 사싀을 μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€. μœ μΌν•˜κ²Œ κ±΄λ„ˆλ›°λŠ” 칸은 N-1이죠. κ·Έλž˜μ„œ 별 영ν–₯이 μ—†...

Comment on lines +9 to +11
long long dp[101][10] = {
0,
};

Choose a reason for hiding this comment

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

μ „μ—­ λ³€μˆ˜λ‘œ 배열을 μƒμ„±ν•˜λ©΄, μžλ™μ μœΌλ‘œ λ‚΄λΆ€ μ›μ†Œλ“€μ΄ 0κ°’μœΌλ‘œ μ΄ˆκΈ°ν™”λ©λ‹ˆλ‹€. λ”°λ‘œ 0으둜 μ΄ˆκΈ°ν™” λͺ…μ‹œλ₯Ό ν•  ν•„μš”λŠ” μ—†λ‹΅λ‹ˆλ‹Ή.

Copy link
Member

@bomik0221 bomik0221 left a comment

Choose a reason for hiding this comment

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

κ³ μƒν•˜μ…¨μŠ΅λ‹ˆλ‹€! 저도 μŠ€ν„°λ”” μ‹œμž‘ν• λ•Œ μ„±μš°λ‹˜μ΄λž‘ λΉ„μŠ·ν•œ 고민을 ν–ˆλŠ”λ°, 정말 재밌게 2λ‹¬λ™μ•ˆ μŠ€ν„°λ”” 진행할 수 μžˆμ–΄ μ’‹μ•˜λ˜ 것 κ°™μ•„μš”πŸ˜„

μ œκ°€ λ³΄κΈ°μ—λŠ” 코딩도 μΆ©λΆ„νžˆ 잘 ν•˜κ³  계신 것 κ°™μ•„μš”! κ³΅λΆ€ν•œ μ‹œκ°„μ΄ κΈΈλ‹€κ³  μ–½λ§€μ΄κΈ°λ³΄λ‹€λŠ” μ•žμœΌλ‘œ 계속 해도 슀트레슀λ₯Ό 덜 받을 κ±° 같은 κ±Έ μ„ νƒν•˜λ©΄ μ’‹λ‹€λŠ” 것이 제 λ‚˜λ¦„λŒ€λ‘œμ˜ μΆ”μ²œμž…λ‹ˆλ‹€. 학업을 μ‰¬λŠ”λ™μ•ˆ 천천히 κ³ λ―Όν•΄λ³΄μ‹œκΈ°λ₯Ό..!!

λͺΈ μ‘°μ‹¬ν•˜μ‹œκ³  λ‹€μΉ˜μ§€ 말고 무사 μ „μ—­ν•˜μ‹œκΈ°λ₯Ό λ°”λžλ‹ˆλ‹€! κΈ°νšŒκ°€ λœλ‹€λ©΄ λ³Ό 수 있으면 μ’‹κ² λ„€μš”~

Copy link
Collaborator

@2secondag 2secondag left a comment

Choose a reason for hiding this comment

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

두 λ‹¬λ™μ•ˆ 수고 λ§ŽμœΌμ…¨μŠ΅λ‹ˆλ‹€~~
저도 κ°œλ°œμ€ 쑰금 μƒκ°ν•΄λ΄μ•Όκ² μ–΄μš” γ…Žγ…Žγ…Ž μ €λŠ” κ·Έλƒ₯ μ•ˆ λ§žλŠ”λ“―,,ν•©λ‹ˆλ‹€
κ΅°λŒ€ 잘 λ‹€λ…€μ˜€λ ΄

@Redish03 Redish03 merged commit aaa6407 into main Mar 6, 2024
1 check passed
@Redish03 Redish03 deleted the 17-Redish03 branch March 6, 2024 15:14
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.

5 participants