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

1-YIM2UL2ET #3

Merged
merged 3 commits into from
Feb 14, 2024
Merged

1-YIM2UL2ET #3

merged 3 commits into from
Feb 14, 2024

Conversation

YIM2UL2ET
Copy link
Collaborator

@YIM2UL2ET YIM2UL2ET commented Feb 12, 2024

πŸ”— 문제 링크

BOJ 18310

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

40λΆ„+Ξ±

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

κ°€μž₯ κ°„λ‹¨ν•˜λ©΄μ„œλ„ μ‰¬μš΄ 방법은 μ•ˆν…Œλ‚˜κ°€ μžˆλŠ” μœ„μΉ˜μ—μ„œ 각 μ§‘λ“€μ˜ 거리λ₯Ό κ΅¬ν•˜λŠ” 것이닀.
But, 이 방법은 μ‹œκ°„μ΄ λ„ˆλ¬΄λ‚˜λ„ 많이 κ±Έλ¦°λ‹€λŠ” 치λͺ…적인 단점이 μ‘΄μž¬ν•œλ‹€. 예λ₯Ό λ“€μ–΄..

for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
        temp += abs(house[i] - house[j]);
    }
    if (min_value > temp) min_value = temp;
}

n = μ§‘μ˜ 수, house = μ§‘μ˜ μœ„μΉ˜λ₯Ό μ €μž₯ν•œ λ°°μ—΄ 이라고 ν• λ•Œ λ‹€μŒμ˜ μ‹œκ°„λ³΅μž‘λ„λŠ” 벌써 n^2이 λ˜μ–΄λ²„λ¦°λ‹€.
이 문제의 μ΅œλŒ€ μ§‘μ˜ 갯수인 200,000λ₯Ό n이라 ν•˜λ©΄ μ΄κ²ƒλ§ŒμœΌλ‘œ 벌써 40,000,000,000번의 연산을 ν•΄μ•Ό ν•˜λŠ” 것이닀.

κ·Έλ ‡λ‹€λ©΄ μ–΄λ–»κ²Œ ν•˜λ©΄ μ’‹μ„κΉŒ?
λ¨Όμ € μ•ˆν…Œλ‚˜μ˜ μœ„μΉ˜κ°€ 1일 λ•Œ μ•ˆν…Œλ‚˜μ™€ μ§‘λ“€κ°„μ˜ 거리 총합인 valueλ₯Ό κ΅¬ν•˜μž. (μœ„μΉ˜ 1에 집이 μžˆλ“  μ—†λ“  상관없닀.)

for (int i = 0; i < n; i++) {
        std::cin >> temp;            // i번째 μ§‘μ˜ μœ„μΉ˜ μž…λ ₯
        location[temp-1]++;       // i번째 μ§‘μ˜ μœ„μΉ˜μ— μ§‘μ˜ 개수 μΆ”κ°€ +1
        value += temp-1;            // μ•ˆν…Œλ‚˜μ˜ μœ„μΉ˜κ°€ 1일 λ•Œ μ•ˆν…Œλ‚˜μ™€ i번 집 κ°„μ˜ 거리 λˆ„μ 
    }

μ΄λ ‡κ²Œ ν•˜λ©΄ value값은 μ•ˆν…Œλ‚˜μ˜ μœ„μΉ˜κ°€ 1일 λ•Œ μ•ˆν…Œλ‚˜μ™€ μ§‘λ“€κ°„μ˜ 거리의 총합을 ꡬ할 수 μžˆλ‹€.

그런 λ‹€μŒ 정닡을 ν˜„μž¬ μ•ˆν…Œλ‚˜μ˜ μœ„μΉ˜μΈ 1으둜 μž„μ‹œ μ„€μ •ν•œλ‹€. (μœ„μΉ˜ 1에 집이 없더라도 집이 μžˆλ‹€κ³  κ°€μ •ν•˜λ©΄ 됨.)

κ·Έ ν›„μ—λŠ” 더 높은 μœ„μΉ˜λ‘œ μ˜¬λΌκ°€μž. μœ„μΉ˜ 1은 이미 집이 μžˆλ‹€κ³  κ°€μ •ν•˜κ³  값을 λ‹€ κ΅¬ν•˜μ˜€μœΌλ―€λ‘œ,
kκ°€ 2~100,000κΉŒμ§€μ˜ μœ„μΉ˜λ₯Ό 가리킨닀면 μž„μ˜μ˜ k번째 μœ„μΉ˜μ—μ„œ λ‹€μŒκ³Ό 같은 행동을 ν•  수 μžˆλ‹€.

kλŠ” 2λΆ€ν„° 100,000κΉŒμ§€..

  1. k에 λ§Œμ•½ 집이 μ—†λ‹€λ©΄ k+1의 μœ„μΉ˜λ‘œ μ˜¬λΌκ°„λ‹€.
  2. k에 λ§Œμ•½ 집이 μžˆλ‹€λ©΄ λ‹€μŒμ„ μ‹€ν–‰ν•œ ν›„ k+1의 μœ„μΉ˜λ‘œ μ˜¬λΌκ°„λ‹€.
    2-1. value += (k와 k 이전에 λ§ˆμ§€λ§‰μ— 봀던 μ§‘μ˜ μœ„μΉ˜μ™€μ˜ 거리차) * (kμ—μ„œ λ³Έ 집을 μ œμ™Έν•œ μ§€κΈˆκΉŒμ§€ λ΄μ™”λ˜ μ§‘μ˜ 수)
    2-2. value -= (k와 k 이전에 λ§ˆμ§€λ§‰μ— 봀던 μ§‘μ˜ μœ„μΉ˜μ™€μ˜ 거리차) * (이제 봐야할 남은 μ§‘μ˜ 수 + kμ—μ„œ λ³Έ μ§‘μ˜ 수)
    2-3. if (μ§€κΈˆμ˜ value < 이전 value) {μ§€κΈˆμ˜ value값을 μ €μž₯, μ •λ‹΅μœΌλ‘œ kλ₯Ό μ €μž₯ν•œλ‹€.} else {μ΄μ „μ˜ value값을 μ €μž₯}
    // λ§Œμ•½ λ§ˆμ§€λ§‰μ— 봀던 집이 μ—†λ‹€λ©΄ value μ΄ˆκΈ°κ°’μ΄ 1μΌλ•Œ μœ„μΉ˜λ₯Ό κΈ°μ€€μœΌλ‘œ μ„€μ •λ˜μ–΄ μžˆμœΌλ―€λ‘œ 1이라 보면 λœλ‹€.

μ§‘μ˜ κ°―μˆ˜λŠ” 무쑰건 1을 λ„˜κ²Œ λ˜μ–΄μžˆμœΌλ―€λ‘œ 2번 행동을 ν•œλ²ˆμ€ μ‹€ν–‰ν•˜κ²Œ λ˜μ–΄ 있고,
1의 μœ„μΉ˜μ— 집이 μžˆλ“  μ—†λ“  초기 μ„€μ •ν•œ value값은 2번 ν–‰λ™μ—μ„œμ˜ value값보닀 무쑰건 μž‘κ±°λ‚˜ κ°™μœΌλ―€λ‘œ λ¬Έμ œλ κ»€ μ—†λ‹€.

κ·Έ ν›„μ—” 정닡을 좜λ ₯ν•˜λ©΄ 끝.

이λ₯Ό μ½”λ“œλ‘œ μž‘μ„±ν•˜λ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

#include <iostream>

int main(void)
{
    int n, temp, index, result, up, down;
    long long value, tvalue;
    int villige[100000] = {0};

    value = 0;
    std::cin >> n;
    for (int i = 0; i < n; i++) {
        std::cin >> temp;
        villige[temp-1]++;
        value += temp-1;
    }
    

    result = 1, index = 0, up = n - villige[0], down = villige[0], tvalue = value; 
    // tvalue: μž„μ‹œ value, up: 봐야할 μ§‘μ˜ 수, down: μ§€κΈˆκΉŒμ§€ 봐온 μ§‘μ˜ 수

    for (int i = 1; i < 100000; i++) {  // λ§ˆμ„ λŒμ•„λ³΄κΈ°
        if (villige[i] == 0) continue;  // i+1번째 μœ„μΉ˜μ— 집이 μ—†μœΌλ©΄ λ‹€μŒ μœ„μΉ˜λ‘œ 이동

        tvalue += down * (i - index);   
        tvalue -= up * (i - index);
        down += villige[i];
        up -= villige[i];

        if (tvalue < value) {   // μ§€κΈˆ κ³„μ‚°ν•œ valueκ°€ μ €μž₯ν–ˆλ˜ value보닀 μž‘μœΌλ©΄
            value = tvalue;     // μ§€κΈˆ κ³„μ‚°ν•œ valueκ°’ μ €μž₯.
            result = i+1;       // μ •λ‹΅μœΌλ‘œ i+1번째 μœ„μΉ˜ μ €μž₯
        }
        index = i;  // 졜근 봀던 μ§‘μ˜ μœ„μΉ˜λ₯Ό κΈ°μ–΅ν•˜κΈ°
    }
    
    std::cout << result;
    return 0;
}

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

머릿속에 μžˆλŠ” λ‚΄μš©μ„ κΈ€λ‘œ ν’€μ–΄μ“°κΈ°λŠ” μ–΄λ ΅λ‹€.

@9kyo-hwang
Copy link

μ½”λ“œ 집어넣을 λ•Œ

std::cout << "Hello, AlgoLeadMe!";

μ‹œμž‘ λ°±ν‹± 뢀뢄에 μ–Έμ–΄λ₯Ό 적어주면 ν•˜μ΄λΌμ΄νŒ…μ΄ λœλ‹΅λ‹ˆλ‹€.
image

@YIM2UL2ET
Copy link
Collaborator Author

κΏ€νŒ κ°μ‚¬ν•©λ‹ˆλ‹€!

@tgyuuAn tgyuuAn changed the title 1 - YIM2UL2ET 1-YIM2UL2ET Feb 12, 2024
@miniron-v
Copy link
Member

miniron-v commented Feb 12, 2024

μ½”λ“œ 집어넣을 λ•Œ

std::cout << "Hello, AlgoLeadMe!";

μ‹œμž‘ λ°±ν‹± 뢀뢄에 μ–Έμ–΄λ₯Ό 적어주면 ν•˜μ΄λΌμ΄νŒ…μ΄ λœλ‹΅λ‹ˆλ‹€.

뭐야 λ‚œ c++둜 μ μ—ˆλŠ”λ° cpp도 돼?

@9kyo-hwang
Copy link

사싀, μ•ˆν…Œλ‚˜κΉŒμ§€μ˜ 거리 합이 μ΅œμ†Œκ°€ λ˜λ„λ‘ ν•˜λ €λ©΄ μ—¬λŸ¬ 집듀 쀑 κ°€μž₯ κ°€μš΄λ° μœ„μΉ˜μ— μ‘΄μž¬ν•˜λŠ” 집에 μ•ˆν…Œλ‚˜λ₯Ό μ„€μΉ˜ν•˜λ©΄ 되겠죠?
그리고 이 κ°€μš΄λ°λ₯Ό κ΅¬ν•˜λŠ” 일은, 정렬을 톡해 μ‰½κ²Œ ꡬ할 수 μžˆκ΅¬μš”.

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    cin.tie(nullptr)->sync_with_stdio(false);
    
    int N; cin >> N;
    vector<int> v(N);
    for(int &i : v) cin >> i;
    
    sort(v.begin(), v.end());
    cout << v[(v.size() - 0.5)/ 2];
    
    return 0;
}

μ§œμž” 일일이 거리λ₯Ό 계산할 ν•„μš” 없이 κΉ”λ”ν•˜κ²Œ λλ‚˜μ£ ?
0.5λ₯Ό λΉΌλŠ” μ΄μœ λŠ” 집이 짝수 개 μ‘΄μž¬ν•  λ•Œ, μ • κ°€μš΄λ° 값이 μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ‹ˆ κ°€μš΄λ° 2개 κ°’ 쀑 μž‘μ€ 값을 좜λ ₯ν•˜κΈ° μœ„ν•΄μ„œμž…λ‹ˆλ‹€.


μ½”λ“œ 집어넣을 λ•Œ

std::cout << "Hello, AlgoLeadMe!";
μ‹œμž‘ λ°±ν‹± 뢀뢄에 μ–Έμ–΄λ₯Ό 적어주면 ν•˜μ΄λΌμ΄νŒ…μ΄ λœλ‹΅λ‹ˆλ‹€.

뭐야 λ‚œ c++둜 μ μ—ˆλŠ”λ° cpp도 돼?

able.

@miniron-v
Copy link
Member

κ°€μž₯ λ‹¨μˆœν•œ 접근법뢀터, μˆ˜λ„ μ½”λ“œμ™€ μ§§λ§‰ν•œ 토막 μ½”λ“œλ“€, 간단λͺ…λ£Œν•œ λ™μž‘ λ°©μ‹κΉŒμ§€... μ™„λ²½ν•˜λ„€μš”.

ν•˜μ§€λ§Œ 그리디 λ¬Έμ œμ— μ œκ°€ 빠지면 μ„­ν•˜μ£ ... 이 λ¬Έμ œλŠ” λ‹¨μˆœν•˜κ²Œ λ°°μ—΄μ˜ μ€‘μ•™κ°’λ§Œ 찾으면 ν•΄κ²°λ©λ‹ˆλ‹€.

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
	int n;
	std::cin >> n;

	std::vector<int> houses(n);
	for (int i = 0; i < n; ++i) {
		std::cin >> houses[i];
	}

	std::sort(houses.begin(), houses.end());

	std::cout << houses[(n - 1) / 2];
}

κ·Έλ¦¬λ””λŠ” μ—­μ‹œ 이런 맛이죠 γ…Ž

@miniron-v
Copy link
Member

miniron-v commented Feb 12, 2024

사싀, μ•ˆν…Œλ‚˜κΉŒμ§€μ˜ 거리 합이 μ΅œμ†Œκ°€ λ˜λ„λ‘ ν•˜λ €λ©΄ μ—¬λŸ¬ 집듀 쀑 κ°€μž₯ κ°€μš΄λ° μœ„μΉ˜μ— μ‘΄μž¬ν•˜λŠ” 집에 μ•ˆν…Œλ‚˜λ₯Ό μ„€μΉ˜ν•˜λ©΄ 되겠죠? 그리고 이 κ°€μš΄λ°λ₯Ό κ΅¬ν•˜λŠ” 일은, 정렬을 톡해 μ‰½κ²Œ ꡬ할 수 μžˆκ΅¬μš”.

μ§œμž” 일일이 거리λ₯Ό 계산할 ν•„μš” 없이 κΉ”λ”ν•˜κ²Œ λλ‚˜μ£ ? 0.5λ₯Ό λΉΌλŠ” μ΄μœ λŠ” 집이 짝수 개 μ‘΄μž¬ν•  λ•Œ, μ • κ°€μš΄λ° 값이 μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ‹ˆ κ°€μš΄λ° 2개 κ°’ 쀑 μž‘μ€ 값을 좜λ ₯ν•˜κΈ° μœ„ν•΄μ„œμž…λ‹ˆλ‹€.

μ•… λŠ¦μ—ˆμ–΄

@YIM2UL2ET
Copy link
Collaborator Author

μ•„λ‹ˆ μ €λ ‡κ²Œ κ°„λ‹¨ν•œ 방법을 생각 λͺ»ν–ˆλ„€.. ν•œμˆ˜ λ°°μ›Œκ°‘λ‹ˆλ‹€. κ°μ‚¬ν•©λ‹ˆλ‹€!

Copy link
Collaborator

@rivkms rivkms left a comment

Choose a reason for hiding this comment

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

쒋은 μ•Œκ³ λ¦¬μ¦˜κ³Ό μ½”λ“œμΈ 것 κ°™μŠ΅λ‹ˆλ‹€πŸ‘

쀑앙값을 μ‚¬μš©ν•˜λ©΄ 더 λΉ λ₯΄κ²Œ ꡬ할 수 μžˆλ‹€λŠ” 것은 저도 μƒˆλ‘œ λ°°μ›Œκ°‘λ‹ˆλ‹€.

μˆ˜κ³ ν•˜μ…¨μŠ΅λ‹ˆλ‹€ 😁

{
int n, temp, index, result, up, down;
long long value, tvalue;
int villige[100000] = {0};
Copy link
Collaborator

Choose a reason for hiding this comment

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

list도 μ’‹μ§€λ§Œ vectorλ₯Ό μ‚¬μš©ν•΄λ³΄μ‹œλŠ” 것도 쒋을 것 κ°™μŠ΅λ‹ˆλ‹€ γ…Žγ…Ž

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

vectorλž‘ 반반으둜 μ‚¬μš©ν•˜κ³  있긴 ν•œλ° ν™•μ‹€νžˆ vectorκ°€ cpp κ³΅λΆ€ν•˜λ©΄ ν• μˆ˜λ‘ μž₯점이 더 λ§Žλ”λΌκ΅¬μš©, μ•žμœΌλ‘œ 자주 μ΄μš©ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€!

Comment on lines +11 to +15
for (int i = 0; i < n; i++) {
std::cin >> temp;
villige[temp-1]++;
value += temp-1;
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

βœ”οΈ villige의 값이 0이면 λ„˜μ–΄κ°€κ²Œ μ½”λ“œκ°€ μž‘μ„±λ˜μ–΄μžˆλŠ”λ° μ§‘μ˜ μœ„μΉ˜(μž…λ ₯κ°’)을 list에 λ‹΄κ³ , 이λ₯Ό μ •λ ¬ν•˜μ—¬ μ‚¬μš©ν•˜λŠ” 방법도 ν•œλ²ˆ μƒκ°ν•΄λ³΄μ…¨μœΌλ©΄ μ’‹κ² μŠ΅λ‹ˆλ‹€.

λ©”λͺ¨λ¦¬μ™€ μ‹œκ°„μ„ 쑰금 더 μ•„λ‚„ 수 μžˆμ„ 것 κ°™μ•„μš”!!

@kjs254
Copy link
Member

kjs254 commented Feb 13, 2024

λ¬Έμ œλŠ” μ‰¬μ›Œ λ³΄μ΄λŠ”λ° μ‹œκ°„λ³΅μž‘λ„λ₯Ό κ³ λ €ν•΄μ•Όν•˜λŠ” λ¬Έμ œμ˜€λ„€μš”. 많이 λ°°μ›Œκ°‘λ‹ˆλ‹€.

ν•œκ°€μ§€ κΆκΈˆν•œ 점이 μžˆλ‹€λ©΄ μ•„λž˜ λ°©μ‹μ—μ„œ k값이 ν•˜λ‚˜μ”© μ¦κ°€ν•˜λ©΄μ„œ valueκ°€ κ°€κ°λ˜λŠ” ꡬ쑰인건 μ•Œκ² λŠ”λ° 거리 차와 μ§‘μ˜ 수λ₯Ό ν•œλ²ˆμ— κ³±ν•œλ‹€λŠ” 점이 잘 이해가 λ˜μ§€ μ•Šμ•„ ν˜Ήμ‹œ (2-1), (2-2) 원리λ₯Ό λ‹€μ‹œ ν•œλ²ˆλ§Œ μ„€λͺ…ν•΄ μ£Όμ‹€ 수 μžˆμ„κΉŒμš”.

  1. k에 λ§Œμ•½ 집이 μ—†λ‹€λ©΄ k+1의 μœ„μΉ˜λ‘œ μ˜¬λΌκ°„λ‹€.
  2. k에 λ§Œμ•½ 집이 μžˆλ‹€λ©΄ λ‹€μŒμ„ μ‹€ν–‰ν•œ ν›„ k+1의 μœ„μΉ˜λ‘œ μ˜¬λΌκ°„λ‹€.
    2-1. value += (k와 k 이전에 λ§ˆμ§€λ§‰μ— 봀던 μ§‘μ˜ μœ„μΉ˜μ™€μ˜ 거리차) * (kμ—μ„œ λ³Έ 집을 μ œμ™Έν•œ μ§€κΈˆκΉŒμ§€ λ΄μ™”λ˜ μ§‘μ˜ 수)
    2-2. value -= (k와 k 이전에 λ§ˆμ§€λ§‰μ— 봀던 μ§‘μ˜ μœ„μΉ˜μ™€μ˜ 거리차) * (이제 봐야할 남은 μ§‘μ˜ 수 + kμ—μ„œ λ³Έ μ§‘μ˜ 수)
    2-3. if (μ§€κΈˆμ˜ value < 이전 value) {μ§€κΈˆμ˜ value값을 μ €μž₯, μ •λ‹΅μœΌλ‘œ kλ₯Ό μ €μž₯ν•œλ‹€.} else {μ΄μ „μ˜ value값을 μ €μž₯}
    // λ§Œμ•½ λ§ˆμ§€λ§‰μ— 봀던 집이 μ—†λ‹€λ©΄ value μ΄ˆκΈ°κ°’μ΄ 1μΌλ•Œ μœ„μΉ˜λ₯Ό κΈ°μ€€μœΌλ‘œ μ„€μ •λ˜μ–΄ μžˆμœΌλ―€λ‘œ 1이라 보면 λœλ‹€.

@YIM2UL2ET
Copy link
Collaborator Author

λ¬Έμ œλŠ” μ‰¬μ›Œ λ³΄μ΄λŠ”λ° μ‹œκ°„λ³΅μž‘λ„λ₯Ό κ³ λ €ν•΄μ•Όν•˜λŠ” λ¬Έμ œμ˜€λ„€μš”. 많이 λ°°μ›Œκ°‘λ‹ˆλ‹€.

ν•œκ°€μ§€ κΆκΈˆν•œ 점이 μžˆλ‹€λ©΄ μ•„λž˜ λ°©μ‹μ—μ„œ k값이 ν•˜λ‚˜μ”© μ¦κ°€ν•˜λ©΄μ„œ valueκ°€ κ°€κ°λ˜λŠ” ꡬ쑰인건 μ•Œκ² λŠ”λ° 거리 차와 μ§‘μ˜ 수λ₯Ό ν•œλ²ˆμ— κ³±ν•œλ‹€λŠ” 점이 잘 이해가 λ˜μ§€ μ•Šμ•„ ν˜Ήμ‹œ (2-1), (2-2) 원리λ₯Ό λ‹€μ‹œ ν•œλ²ˆλ§Œ μ„€λͺ…ν•΄ μ£Όμ‹€ 수 μžˆμ„κΉŒμš”.

  1. k에 λ§Œμ•½ 집이 μ—†λ‹€λ©΄ k+1의 μœ„μΉ˜λ‘œ μ˜¬λΌκ°„λ‹€.
  2. k에 λ§Œμ•½ 집이 μžˆλ‹€λ©΄ λ‹€μŒμ„ μ‹€ν–‰ν•œ ν›„ k+1의 μœ„μΉ˜λ‘œ μ˜¬λΌκ°„λ‹€.
    2-1. value += (k와 k 이전에 λ§ˆμ§€λ§‰μ— 봀던 μ§‘μ˜ μœ„μΉ˜μ™€μ˜ 거리차) * (kμ—μ„œ λ³Έ 집을 μ œμ™Έν•œ μ§€κΈˆκΉŒμ§€ λ΄μ™”λ˜ μ§‘μ˜ 수)
    2-2. value -= (k와 k 이전에 λ§ˆμ§€λ§‰μ— 봀던 μ§‘μ˜ μœ„μΉ˜μ™€μ˜ 거리차) * (이제 봐야할 남은 μ§‘μ˜ 수 + kμ—μ„œ λ³Έ μ§‘μ˜ 수)
    2-3. if (μ§€κΈˆμ˜ value < 이전 value) {μ§€κΈˆμ˜ value값을 μ €μž₯, μ •λ‹΅μœΌλ‘œ kλ₯Ό μ €μž₯ν•œλ‹€.} else {μ΄μ „μ˜ value값을 μ €μž₯}
    // λ§Œμ•½ λ§ˆμ§€λ§‰μ— 봀던 집이 μ—†λ‹€λ©΄ value μ΄ˆκΈ°κ°’μ΄ 1μΌλ•Œ μœ„μΉ˜λ₯Ό κΈ°μ€€μœΌλ‘œ μ„€μ •λ˜μ–΄ μžˆμœΌλ―€λ‘œ 1이라 보면 λœλ‹€.

down을 kμ—μ„œ λ³Έ μ§‘μ˜ 수λ₯Ό μ œμ™Έν•œ μ§€κΈˆκΉŒμ§€ λ΄μ™”λ˜ μ§‘μ˜ 수,
up을 kμ—μ„œ λ³Έ μ§‘μ˜ 수 + μ•žμœΌλ‘œ 봐야할 μ§‘μ˜ 수
라고 ν•©μ‹œλ‹€. (up + down == 총 μ§‘μ˜ 수)

λ˜ν•œ 2번 ν–‰λ™μ—μ„œ 쑰금 더 μΆ”κ°€ν•΄μ„œ "k에 집이 μžˆλ‹€λ©΄ 그곳에 μ•ˆν…Œλ‚˜λ₯Ό μ„€μΉ˜ν•œλ‹€" κ°€μ •ν•©μ‹œλ‹€.

κ·Έλ ‡λ‹€λ©΄ μ›λž˜ μ•ˆν…Œλ‚˜λ₯Ό μ„€μΉ˜ν–ˆλ˜ 곳은 초기라면 1λ²ˆμœ„μΉ˜ μ΄κ±°λ‚˜, 그게 μ•„λ‹ˆλΌλ©΄ 이전에 봀던 μ§‘μ˜ μœ„μΉ˜ (이전 kκ°’) μ΄κ² μ§€μš”.
νŽΈμ˜μƒ κ·Έ μœ„μΉ˜λ₯Ό p라고 κ°€μ •ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

κ·Έλ ‡λ‹€λ©΄ μ•ˆν…Œλ‚˜λŠ” k-p만큼 μ•žμœΌλ‘œ μ›€μ§μ΄κ²Œ λœκ²ƒμ΄κ³ , 이전에 λ΄μ™”λ˜ 집듀과 μ•ˆν…Œλ‚˜κ°„μ˜ κ±°λ¦¬λŠ” k-p만큼 λŠ˜μ–΄λ‚˜κ²Œ λ˜μ—ˆμœΌλ―€λ‘œ value값은 (k-p)*down 만큼 λŠ˜μ–΄λ‚˜κ²Œ λ©λ‹ˆλ‹€.

2-1을 μ„€λͺ…λ“œλ Έμ§€λ§Œ 2-2도 λ§ˆμ°¬κ°€μ§€μž…λ‹ˆλ‹€. μ•ˆν…Œλ‚˜κ°€ k-p만큼 μ•žμœΌλ‘œ μ΄λ™ν•˜μ—¬ μ„€μΉ˜λ¬λ‹€λ©΄ μ•žμœΌλ‘œ 봐야할 집듀과 μ•ˆν…Œλ‚˜κ°„μ˜ κ±°λ¦¬λŠ” 그만큼 μ€„μ–΄λ“€κ²Œ λ˜κ² μ§€μš”. λ”°λΌμ„œ value값은 (k-p)*up 만큼 μ€„μ–΄λ“€κ²Œ λ©λ‹ˆλ‹€.

근데 사싀 μ΄λ ‡κ²Œ λ³΅μž‘ν•˜κ²Œ μƒκ°ν•˜μ§€ μ•Šλ”λΌλ„ κ³ μˆ˜λΆ„λ“€μ΄ 적어주신 쀑간값 μ°ΎκΈ°κ°€ 근본적으둜 훨씬 κ°„νŽΈν•˜κ³ , 문제의 핡심을 κ΄€ν†΅ν•˜λŠ” 풀이 κ°™μŠ΅λ‹ˆλ‹€. 제 ν’€μ΄λŠ” μ°Έκ³ μ •λ„λ‘œλ§Œ λ΄μ£Όμ„Έμš”.

ν˜Ήμ‹œλ‚˜ μ‘°κΈˆμ΄λΌλ„ 이해 μ•ˆλ˜μ‹œλŠ” λΆ€λΆ„ 있으면 또 μ§ˆλ¬Έν•΄μ£Όμ„Έμš”!

@kjs254 kjs254 requested review from kjs254 and removed request for kjs254 February 14, 2024 05:18
Copy link
Member

@kjs254 kjs254 left a comment

Choose a reason for hiding this comment

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

리뷰λ₯Ό 달아야 ν•˜λŠ”λ° λͺ¨λ₯΄κ³  μ½”λ©˜νŠΈλ₯Ό λ‹¬μ•„μ„œ λ‹€μ‹œ λ‹΅λ‹ˆλ‹€ 😡😡

ν•œ 단계씩 μ°¨κ·Όμ°¨κ·Ό ν’€μ–΄μ„œ μ„€λͺ…ν•΄μ£Όμ‹  점이 μ•„μ£Ό μ΄ν•΄ν•˜κΈ° νŽΈν–ˆμŠ΅λ‹ˆλ‹€.

μ‹€μ œλ‘œ μ€‘μ•™κ°’μœΌλ‘œ κ³„μ‚°ν•˜λŠ” 방법이 κ°€μž₯ λΉ λ₯΄κ³  κ°„λ‹¨ν•œ λ°©λ²•μ΄μ§€λ§Œ μ„€λͺ…ν•΄μ£Όμ‹  방법을 κ΅¬ν˜„ν•˜λŠ” 과정에 μ˜λ―Έκ°€ μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

μ•žμœΌλ‘œλ„ ν™”μ΄νŒ…!! πŸ”₯ πŸ”₯

@miniron-v
Copy link
Member

ν˜Ήμ‹œλ‚˜ μ‘°κΈˆμ΄λΌλ„ 이해 μ•ˆλ˜μ‹œλŠ” λΆ€λΆ„ 있으면 또 μ§ˆλ¬Έν•΄μ£Όμ„Έμš”!

말둜 ν’€μ–΄μ“Έ λ•Œ 글이 길어진닀면, μ•„λ¬΄λž˜λ„ μ΄ν•΄ν•˜κΈ° 점점 μ–΄λ €μ›Œμ§€μ£ .
이럴 땐 λ―Έλ¦¬μΊ”λ²„μŠ€ 등을 μ΄μš©ν•΄ κ·Έλ¦Ό 자료λ₯Ό μ œκ³΅ν•˜λ©΄ μ„€λͺ…ν•˜κΈ°λ„, μ΄ν•΄ν•˜κΈ°λ„ νŽΈν•΄μ§‘λ‹ˆλ‹€!

image

예λ₯Ό λ“€λ©΄ 이런 μ‹μœΌλ‘œ 말이죠.

@YIM2UL2ET
Copy link
Collaborator Author

ν™•μ‹€νžˆ 그림으둜 λ³΄λ‹ˆκΉ ꡉμž₯히 κΉ”λ”ν•˜κ³  가독성도 훨씬 μ’‹λ„€μš”.
저도 λ‹€μŒλ²ˆμ—λŠ” ν•„μš”ν•  λ•Œ 그림도 ν•œλ²ˆ λ„£μ–΄μ„œ μ„€λͺ…ν•΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

@YIM2UL2ET YIM2UL2ET merged commit 765860f into main Feb 14, 2024
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.

6 participants