ABOUT ME

์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์šฉ ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹น~ ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ๋Š” https://velog.io/@ows3090 ์— ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

Today
Yesterday
Total
  • [Programmers] Lv3. ์ง•๊ฒ€๋‹ค๋ฆฌ ๊ฑด๋„ˆ๊ธฐ
    SW Test/Programmers 2020. 10. 4. 00:38
    ๋ฐ˜์‘ํ˜•
    • ์ด ๊ธ€์€ c++๋กœ ํ’€์ด๋ฅผ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค.

    ๋ฌธ์ œ

    ์˜ˆ์‹œ


    ํ’€์ด 1

    • O(n)์˜ ํ’€์ด ๋ฐฉ๋ฒ•
    #include <string>
    #include <vector>
    #include <map>
    #include <algorithm>
    using namespace std;
    // ์นด์นด์˜ค ์ •์„ํ’€์ด๋Š” ์ด๋ถ„ํƒ์ƒ‰์ด์ง€๋งŒ O(nlogn)๋ณด๋‹ค ๋” ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ O(n)์ด ์žˆ๋‹ค.
    // k๊ฐœ์˜ ์œˆ๋„์šฐ์—์„œ ์ตœ๋Œ“๊ฐ’์ด ์œˆ๋„์šฐ๋ฅผ ๋ชป๊ฑด๋„ˆ๊ฒŒ ๋˜๋Š” ๊ฐ’์ด๋‹ค. ์ด ๊ฐ’์ด ์ตœ์†Œ๊ฐ€ ๋˜๋Š” ์ง€์ ์ด ๋ฐ”๋กœ ์ •๋‹ต์ด ๋œ๋‹ค.
    int solution(vector<int> stones, int k) {
    int answer = 200000000;
    // ์ค‘๋ณต๋œ key๋„ ํฌํ•จ์‹œํ‚ค๊ธฐ ์œ„ํ•œ map
    multimap<int,int> m;
    // multimap์˜ ์ •๋ ฌ์€ key์™€ value๊ฐ€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค.
    // key๊ฐ€ ๋™์ผํ•  ๊ฒฝ์šฐ index๊ฐ€ ์ž‘์€๊ฐ’๋ถ€ํ„ฐ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์Œ์ˆ˜๋ฅผ ์ทจํ•œ๋‹ค.
    for(int i=0;i<k;i++){
    m.insert({stones[i],-i});
    }
    // 0๋ถ€ํ„ฐ k-1๋ฒˆ๊นŒ์ง€์˜ ๋ฐฐ์—ด์˜ ๊ฐ’์—์„œ ์ตœ๋Œ“๊ฐ’
    answer = (*--m.end()).first;
    // ๊ฐ€์žฅ ๋‚˜์ค‘์— ๋‹ด์€ stones ์ œ๊ฑฐ ํ›„ i๋ฒˆ์งธ stones ์ถ”๊ฐ€
    // ์ดํ›„ ์ตœ๋Œ“๊ฐ’
    for(int i=k;i<stones.size();i++){
    m.erase(m.find(stones[i-k]));
    m.insert({stones[i],-i});
    int num = (*--m.end()).first;
    answer = min(answer,num);
    }
    return answer;
    }

    ํ’€์ด 2

    • O(nlogn)์˜ ํ’€์ด ๋ฐฉ๋ฒ•
      #include <string>
      #include <vector>
      #include <map>
      #include <algorithm>
      using namespace std;
      int solution(vector<int> stones, int k) {
      int answer = 0;
      // ๊ฑด๋„ ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์˜ ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ด๋ถ„ํƒ์ƒ‰
      int s = 1;
      int e = *max_element(stones.begin(),stones.end());
      while(s<=e){
      int mid = (s+e)/2;
      int len = 0;
      int sum = 0;
      // mid๋ณด๋‹ค ์ž‘์€ ์ˆ˜๊ฐ€ ์–ผ๋งˆ๋‚˜ ์—ฐ์†๋˜๋Š”์ง€ ํ™•์ธ => len
      for(int i=0;i<stones.size();i++){
      if(stones[i]<=mid){
      sum++;
      }
      else{
      len = max(sum,len);
      sum = 0;
      }
      }
      len = max(sum,len);
      // len์ด k๊ฐ’๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด mid๋ณด๋‹ค๋Š” ์ž‘์€
      if(len>=k){
      e = mid-1;
      }else{
      s = mid+1;
      }
      }
      answer = s;
      return answer;
      }
    • ์ถ”๊ฐ€๋กœ ๊ถ๊ธˆํ•œ ์ ์ด๋‚˜ ์ˆ˜์ •ํ•  ๋ถ€๋ถ„ ์žˆ์œผ๋ฉด ๋Œ“๊ธ€๋กœ ๋‚จ๊ฒจ์ฃผ์„ธ์š”.
    ๋ฐ˜์‘ํ˜•
Designed by Tistory.