๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Programmers

[C++/PGS] Lv.2 : ๋’ค์— ์žˆ๋Š” ํฐ ์ˆ˜ ์ฐพ๊ธฐ

by xxilliant 2025. 5. 15.
728x90
๋ฐ˜์‘ํ˜•

 

https://school.programmers.co.kr/learn/courses/30/lessons/154539

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr


ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ ˆ๋ฒจ2.

 

1. ์ฒซ ์‹œ๋„ : 94.6์  (ํ…Œ์ผ€ 20, 22๋ฒˆ ์‹œ๊ฐ„์ดˆ๊ณผ)

 

๋’ค์—์„œ๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•˜๋ฉด์„œ, ์ตœ๋Œ“๊ฐ’์„ ๊ฐฑ์‹ ํ•ด์ฃผ๊ณ 

์ž‘์€ ์ˆ˜๋ฅผ ๋งŒ๋‚˜๋ฉด ๊ทธ ์œ„์น˜๋ถ€ํ„ฐ ์ตœ๋Œ“๊ฐ’๊นŒ์ง€์˜ ๋ฒ”์œ„์—์„œ๋งŒ for๋ฌธ์„ ๋Œ๋ ค์ฃผ์—ˆ๋‹ค.

๊ทธ๋žฌ๋”๋‹ˆ 37๊ฐœ ์ค‘์— 2๊ฐœ ํ‹€๋ ค์„œ..์‹คํŒจ๐Ÿฅน ์‹œ๊ฐ„์„ ๋” ์ค„์—ฌ์•ผ ํ•œ๋‹ค!!!

 

2. ๋‘๋ฒˆ์งธ ์‹œ๋„ - ์„ฑ๊ณต ๐Ÿ’ฏ๐Ÿ’ฏ๐Ÿ’ฏ

๋‚ด ๊ธฐ์กด ์ฝ”๋“œ์—์„œ ์˜ค๋ž˜๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ [10, 1, 1, 1, 1, 1, 1, 1, ... 1, 12] ์ด๋Ÿฐ ๊ฒฝ์šฐ์ผ ๊ฑฐ๋ผ๊ณ  ์ถ”์ •ํ–ˆ๋‹ค.

๊ทธ๋ž˜์„œ, ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ๋А๋‚Œ์œผ๋กœ ๊ฐ ์ธ๋ฑ์Šค๊ฐ€ ๋ณธ์ธ๋ณด๋‹ค ๋’ค์—์žˆ๋Š” ํฐ ์ˆ˜์˜ ์œ„์น˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด

๋ฐ˜๋ณต๋ฌธ์—์„œ ์œ„์น˜ ์ด๋™์„ ํ†ตํ•ด ๋” ํšจ์œจ์ ์ธ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

๊ทธ ๊ฒฐ๊ณผ๋Š” 100์ !!! 

 

 

๋‚˜์˜ ํ’€์ด

#include <string>
#include <vector>
#include <iostream>
using namespace std;

vector<int> solution(vector<int> numbers) {
    vector<int> answer(numbers.size(), -1);
    int max = numbers[numbers.size()-1];
    int maxIdx = numbers.size()-1;
    int next[1000001] = {-1,}; // ๋‚˜ ๋‹ค์Œ์œผ๋กœ ํฐ ์ˆ˜์˜ ์œ„์น˜๋ฅผ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ์ €์žฅ
    
    for(int i=numbers.size()-2; i>=0; --i){
        if(numbers[i] >= max){
            max = numbers[i];
            maxIdx = i;
            next[i] = maxIdx;
        }
        else{
            for(int j=i+1; j<=maxIdx; ++j){
                if(numbers[i]<numbers[j]) {
                    answer[i] = numbers[j];
                    next[i] = j;
                    break;
                }
                else{
                    j = next[j]-1;
                }
            }
        }
    }
    return answer;
}

 

728x90
๋ฐ˜์‘ํ˜•