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

38-tgyuuAn #138

Merged
merged 1 commit into from
Mar 1, 2024
Merged

38-tgyuuAn #138

merged 1 commit into from
Mar 1, 2024

Conversation

tgyuuAn
Copy link
Member

@tgyuuAn tgyuuAn commented Feb 15, 2024

πŸ”— 문제 링크

ν”Όλ³΄λ‚˜μΉ˜ 수 3

이거 κ°œλ… λͺ¨λ₯΄λ©΄ μ ˆλŒ€ λͺ» ν‘ΈλŠ” λ¬Έμ œμž…λ‹ˆλ‹€.

이 문제 ν’€κΈ° μœ„ν•΄μ„œ 피사노 μ£ΌκΈ°λΌλŠ” 것을 μ•Œμ•„μ•Ό ν•΄μš”.

문제 ν•œλ²ˆ μ½μ–΄λ§Œ λ³΄μ‹œκ³ , PR 읽고 점수 μ–»μ–΄κ°€μ„Έμš”...!

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

20λΆ„

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

일반 ν”Όλ³΄λ‚˜μΉ˜ μˆ˜λŠ” DPλ₯Ό μ΄μš©ν•΄μ„œ λΉ λ₯΄κ²Œ κ΅¬ν•˜λŠ” 방법을 μ•Œ 수 μžˆμ„ ν…Œλ‹ˆ,

이 뢀뢄에 λŒ€ν•΄μ„œλŠ” μ„€λͺ…ν•˜μ§€ μ•Šκ² λ‹€.




일단, 문제λ₯Ό 보면 말도 μ•ˆλ˜λŠ” 쑰건이 μžˆλ‹€.


첫째 쀄에 n이 주어진닀. n은 1,000,000,000,000,000,000보닀 μž‘κ±°λ‚˜ 같은 μžμ—°μˆ˜μ΄λ‹€.

수λ₯Ό λ§λ‘œλ„ ν‘œν˜„ λͺ»ν•  μ •λ„λ‘œ 맀우 크닀.

μ΄λŠ” DPλ₯Ό μ΄μš©ν•œλ‹€ ν•œλ“€, $O(n)$의 μ‹œκ°„ λ³΅μž‘λ„λ‘œλ„ 풀리지 μ•Šμ„ λ¬Έμ œμ΄λ‹€.










κ·Έλƒ₯ 이 λ¬Έμ œλŠ” 처음 보자마자 κΉ¨λ‹¬μ•˜λ‹€.

'μ•„, 이 λ¬Έμ œλŠ” λ‚΄ 지식 λ°–μ˜ μ˜μ—­μ΄κ΅¬λ‚˜.'

'μ•„, 이 λ¬Έμ œλŠ” κ·Έλƒ₯ 지식을 μ–»κ³  ν‘ΈλŠ” 것이 건강에 μ΄λ‘­κ² κ΅¬λ‚˜.' ν•˜κ³  말이닀.










κ·Έλž˜μ„œ 질문 κ²Œμ‹œνŒμ„ 살짝 μΏ΅ λˆŒλŸ¬λ³΄μ•˜λ‹€.

image

첫 νŽ˜μ΄μ§€λ₯Ό λˆ„λ₯΄μžλ§ˆμž "피사노 μ£ΌκΈ°" λΌλŠ” λ”± 봐도 문제λ₯Ό ν‘ΈλŠ” 데 핡심 ν‚€ μ—­ν•  을 해쀄 ν‚€μ›Œλ“œλ₯Ό μ–»μ—ˆλ‹€.

λ°”λ‘œ ꡬ글링 ν•΄λ³΄μ•˜λ‹€.










μ—­μ‹œλ‚˜.

이 λ¬Έμ œλŠ” 이 ν‚€μ›Œλ“œλ₯Ό λͺ¨λ₯΄λ©΄ ν’€ 수 μ—†λŠ” 문제 μ˜€λ‹€.

피사노 μ£ΌκΈ°λž€ λ‹€μŒκ³Ό κ°™λ‹€.


image

좜처










즉, μ €λ ‡κ²Œ 말도 μ•ˆλ˜λŠ” μˆ˜κ°€ μžˆλ‹€κ³  ν•˜λ”λΌλ„,

μ•„λž˜μ™€ 같이 좜λ ₯을 1,000,000 을 λ‚˜λˆˆ λ‚˜λ¨Έμ§€λ₯Ό κ΅¬ν•˜λŠ” 데에 μžˆμ–΄μ„œλŠ”

첫째 쀄에 n번째 ν”Όλ³΄λ‚˜μΉ˜ 수λ₯Ό 1,000,000으둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€λ₯Ό 좜λ ₯ν•œλ‹€.

피사노 μ£ΌκΈ° λ₯Ό μ΄μš©ν•˜μ—¬ n을 획기적으둜 쀄일 수 μžˆλ‹€λŠ” λœ»μ΄λ‹€.










이 λ•Œ, 피사노 주기의 곡식은 λ‹€μŒκ³Ό κ°™λ‹€.

image

즉, μœ„ 문제λ₯Ό μ˜ˆμ‹œλ‘œ λ“€μžλ©΄

1,000,000 은 $10^6$ μ΄λ―€λ‘œ,

μ΄λŠ” $15 X 10^5$ 의 μ£ΌκΈ°λ₯Ό κ°–κ²Œ λœλ‹€λŠ” λœ»μ΄λ‹€.

즉,

μš°λ¦¬κ°€ ꡬ해야 ν•  N이 μ΅œλŒ€ $1,000,000,000,000,000,000$ μ—μ„œ 1,000,000,000,000,000,000 % 15 X 10^5 으둜 쀄일 수 μžˆλ‹€λŠ” 뜻이 λœλ‹€.










자, 이제 n 값이 150만 μ•„λž˜λ‘œ λ–¨μ–΄μ‘Œλ‹€.

피사노 μ£ΌκΈ°λ₯Ό μ‚¬μš©ν•˜μ—¬ λ‹¨λ²ˆμ— 문제 λ‚œμ΄λ„λŠ” κ³¨λ“œ 2μ—μ„œ 싀버 λŒ€λ‘œ λ–¨μ–΄μ‘Œλ‹€.

n값이 150만 밖에 λ˜μ§€ μ•ŠλŠ” ν”Όλ³΄λ‚˜μΉ˜λ₯Ό κ΅¬ν•˜λ©΄ 끝이닀.










μ—¬κΈ°κΉŒμ§€ μ™€μ„œ,

κ·ΈλŒ€λ‘œ μ œμΆœν•˜λ©΄ μ‹œκ°„ 초과 및 λ©”λͺ¨λ¦¬ 초과λ₯Ό κ²½ν—˜ν•  수 μžˆλŠ”λ°,

λ©”λͺ¨λ¦¬ μ΄ˆκ³ΌλŠ” ν”Όλ³΄λ‚˜μΉ˜λ₯Ό dp둜 ν’€ λ•Œ 항이 3개만 μžˆμ–΄λ„ λœλ‹€λŠ” 점을 μ΄μš©ν•˜μ—¬

배열을 3칸으둜 λ§Œλ“€κ³  κ³„μ†ν•΄μ„œ κ°±μ‹ ν•΄κ°€λŠ” μ‹μœΌλ‘œ ν•΄κ²°ν•˜λ©΄ 되고,




μ‹œκ°„ μ΄ˆκ³ΌλŠ” λ„ˆλ¬΄ 큰 수λ₯Ό 핸듀링 ν•˜λ‹€ λ³΄λ‹ˆ μƒκΈ°λŠ” μ‹œκ°„ 초과 μ΄λ―€λ‘œ λ‚˜λ¨Έμ§€ μ—°μ‚° 곡식을 μ΄μš©ν•˜μ—¬,

ꡬ할 λ•Œ λ§ˆλ‹€ λ‚˜λ¨Έμ§€ 연산을 μ μš©μ‹œμΌœμ„œ ν’€μ–΄μ£Όλ©΄ λ˜κ² λ‹€.










μΆ”κ°€μ μœΌλ‘œ,

이 녀석이 ν”Όλ³΄λ‚˜μΉ˜ 수 λŒ€λΉ΅ 문젠데, 이 문제 ν’€λ©΄ μ•„λž˜ μ—°κ΄€ 문제 λ‹€ ν’€λ¦°λ‹€.

점수 μ–»μ–΄κ°€μ‹œλΌμš”

image

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

피사노 μ£ΌκΈ°

ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄μ—μ„œ λ‚˜λ¨Έμ§€ 값을 ꡬ할 λ•Œ,

λ‚˜λˆ„λŠ” μˆ˜κ°€ $10^K$ 일 λ•Œ, μ£ΌκΈ°λŠ” $15 * 10^k-1$κ³Ό κ°™λ‹€.

좜처

@tgyuuAn tgyuuAn added tgyuuAn ν•œ μ€„λ‘œλŠ” μ†Œκ°œν•  수 μ—†λŠ” λ‚¨μž. 리뷰 κΈ°λ‹€λ¦¬λŠ” 쀑 πŸ”₯ labels Feb 15, 2024
@tgyuuAn tgyuuAn self-assigned this Feb 15, 2024
@tgyuuAn tgyuuAn marked this pull request as ready for review February 15, 2024 18:25
@yuna83
Copy link
Member

yuna83 commented Feb 19, 2024

dpλ¬Έμ œμ—¬μ„œ μ „μ²΄μ½”λ“œ 길이가 짧은 게 μ‹ κΈ°ν•˜λ„€μš”
cμ–Έμ–΄ 배울 λ•Œ ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄ 문제 많이 ν’€μ—ˆμ—ˆλŠ”λ°
피사노 μ£ΌκΈ°λΌλŠ” κ°œλ…μ€ λ‚œμƒ 처음 λ“£λ„€μš” γ„·γ„·

피사노 μ£ΌκΈ°: ν”Όλ³΄λ‚˜μΉ˜ 수λ₯Ό μ–΄λ–€ 수 k둜 λ‚˜λˆŒ λ•Œ, λ‚˜λ¨Έμ§€κ°€ κ°€μ§€λŠ” μ£ΌκΈ°
피사노 μ£ΌκΈ° 곡식: 15*10^(k-1)

λ‹€λ₯Έ ν”Όλ³΄λ‚˜μΉ˜μˆ˜ λ¬Έμ œλ“€ ν’€μ–΄μ„œ 점수 μ–»μ–΄κ°€μ•Όκ² μ–΄μš”
쒋은 풀이 κ°μ‚¬ν•©λ‹ˆλ‹€!!

Copy link
Collaborator

@pknujsp pknujsp left a comment

Choose a reason for hiding this comment

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

μ΅œλŒ€ 100κ²½ μ΄λΌλ‹ˆ 피사노 μ£ΌκΈ° λͺ¨λ₯΄λ©΄ μ ˆλŒ€ λͺ»ν‘ΈλŠ” λ¬Έμ œκ°€ λ§žλ„€μš”
κ΅¬ν˜„ 둜직 μžμ²΄λŠ” λ‹¨μˆœν•˜κ΅°μš” 쒋은 κ°œλ… 잘 λ¨Ήκ³ κ°‘λ‹ˆλ‹€

@Munbin-Lee
Copy link
Member

Code
#include <iostream>
#include <vector>

using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    const int PERIOD = 1'500'000;

    vector<int> fibo(PERIOD);
    fibo[1] = 1;

    for (int i = 2; i < PERIOD; i++) {
        fibo[i] = fibo[i - 1] + fibo[i - 2];
        fibo[i] %= 1'000'000;
    }

    long long n;
    cin >> n;

    cout << fibo[n % PERIOD];

    return 0;
}

이런 νŠΉμ΄ν•œ λ¬Έμ œλŠ” μ–΄λ””μ„œ λ°œκ²¬ν•˜μ…¨λ‚˜μš”?

주기성을 λ°œκ²¬ν•œλ‹€κ³  해도 μ£ΌκΈ°κ°€ 150λ§Œμ΄λΌλŠ” 것을 μ•Œ 수 μ—†μ–΄μ„œ μ ˆλŒ€ λͺ» ν‘ΈλŠ”;;;;

@tgyuuAn
Copy link
Member Author

tgyuuAn commented Mar 1, 2024

@Munbin-Lee γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹γ…‹ νŠΉμ΄ν•œ 문제... μž¬λ°Œλ”λΌκ³ μš” ...

@tgyuuAn tgyuuAn merged commit bc348cd into main Mar 1, 2024
1 check passed
@tgyuuAn tgyuuAn deleted the 38-tgyuuAn branch March 1, 2024 12:10
@tgyuuAn tgyuuAn mentioned this pull request Sep 3, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
tgyuuAn ν•œ μ€„λ‘œλŠ” μ†Œκ°œν•  수 μ—†λŠ” λ‚¨μž. 리뷰 μ™„λ£Œ βœ”οΈ
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants