[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ๋ณด์„ ์‡ผํ•‘ (C++)

2023. 9. 20. 01:59ยท๐Ÿ–ฅ๏ธ Study Note/Coding Test

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

๋ฌธ์ œ ์„ค๋ช…

[๋ณธ ๋ฌธ์ œ๋Š” ์ •ํ™•์„ฑ๊ณผ ํšจ์œจ์„ฑ ํ…Œ์ŠคํŠธ ๊ฐ๊ฐ ์ ์ˆ˜๊ฐ€ ์žˆ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.]

๊ฐœ๋ฐœ์ž ์ถœ์‹ ์œผ๋กœ ์„ธ๊ณ„ ์ตœ๊ณ ์˜ ๊ฐ‘๋ถ€๊ฐ€ ๋œ ์–ดํ”ผ์น˜๋Š” ์ŠคํŠธ๋ ˆ์Šค๋ฅผ ๋ฐ›์„ ๋•Œ๋ฉด ์ด๋ฅผ ํ’€๊ธฐ ์œ„ํ•ด ์˜คํ”„๋ผ์ธ ๋งค์žฅ์— ์‡ผํ•‘์„ ํ•˜๋Ÿฌ ๊ฐ€๊ณค ํ•ฉ๋‹ˆ๋‹ค.

์–ดํ”ผ์น˜๋Š” ์‡ผํ•‘์„ ํ•  ๋•Œ๋ฉด ๋งค์žฅ ์ง„์—ด๋Œ€์˜ ํŠน์ • ๋ฒ”์œ„์˜ ๋ฌผ๊ฑด๋“ค์„ ๋ชจ๋‘ ์‹น์“ธ์ด ๊ตฌ๋งคํ•˜๋Š” ์Šต๊ด€์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด๋А ๋‚  ์ŠคํŠธ๋ ˆ์Šค๋ฅผ ํ’€๊ธฐ ์œ„ํ•ด ๋ณด์„ ๋งค์žฅ์— ์‡ผํ•‘์„ ํ•˜๋Ÿฌ ๊ฐ„ ์–ดํ”ผ์น˜๋Š” ์ด์ „์ฒ˜๋Ÿผ ์ง„์—ด๋Œ€์˜ ํŠน์ • ๋ฒ”์œ„์˜ ๋ณด์„์„ ๋ชจ๋‘ ๊ตฌ๋งคํ•˜๋˜ ํŠน๋ณ„ํžˆ ์•„๋ž˜ ๋ชฉ์ ์„ ๋‹ฌ์„ฑํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค.

์ง„์—ด๋œ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ณด์„์„ ์ ์–ด๋„ 1๊ฐœ ์ด์ƒ ํฌํ•จํ•˜๋Š” ๊ฐ€์žฅ ์งง์€ ๊ตฌ๊ฐ„์„ ์ฐพ์•„์„œ ๊ตฌ๋งค

์˜ˆ๋ฅผ ๋“ค์–ด ์•„๋ž˜ ์ง„์—ด๋Œ€๋Š” 4์ข…๋ฅ˜์˜ ๋ณด์„(RUBY, DIA, EMERALD, SAPPHIRE) 8๊ฐœ๊ฐ€ ์ง„์—ด๋œ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

์ง„์—ด๋Œ€ ๋ฒˆํ˜ธ 1 2 3 4 5 6 7 8
๋ณด์„ ์ด๋ฆ„ DIA RUBY RUBY DIA DIA EMERALD SAPPHIRE DIA

์ง„์—ด๋Œ€์˜ 3๋ฒˆ๋ถ€ํ„ฐ 7๋ฒˆ๊นŒ์ง€ 5๊ฐœ์˜ ๋ณด์„์„ ๊ตฌ๋งคํ•˜๋ฉด ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ณด์„์„ ์ ์–ด๋„ ํ•˜๋‚˜ ์ด์ƒ์”ฉ ํฌํ•จํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ง„์—ด๋Œ€์˜ 3, 4, 6, 7๋ฒˆ์˜ ๋ณด์„๋งŒ ๊ตฌ๋งคํ•˜๋Š” ๊ฒƒ์€ ์ค‘๊ฐ„์— ํŠน์ • ๊ตฌ๊ฐ„(5๋ฒˆ)์ด ๋น ์ง€๊ฒŒ ๋˜๋ฏ€๋กœ ์–ดํ”ผ์น˜์˜ ์‡ผํ•‘ ์Šต๊ด€์— ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ง„์—ด๋Œ€ ๋ฒˆํ˜ธ ์ˆœ์„œ๋Œ€๋กœ ๋ณด์„๋“ค์˜ ์ด๋ฆ„์ด ์ €์žฅ๋œ ๋ฐฐ์—ด gems๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์ด๋•Œ ๋ชจ๋“  ๋ณด์„์„ ํ•˜๋‚˜ ์ด์ƒ ํฌํ•จํ•˜๋Š” ๊ฐ€์žฅ ์งง์€ ๊ตฌ๊ฐ„์„ ์ฐพ์•„์„œ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

๊ฐ€์žฅ ์งง์€ ๊ตฌ๊ฐ„์˜ ์‹œ์ž‘ ์ง„์—ด๋Œ€ ๋ฒˆํ˜ธ์™€ ๋ ์ง„์—ด๋Œ€ ๋ฒˆํ˜ธ๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ๋ฐฐ์—ด์— ๋‹ด์•„์„œ return ํ•˜๋„๋ก ํ•˜๋ฉฐ, ๋งŒ์•ฝ ๊ฐ€์žฅ ์งง์€ ๊ตฌ๊ฐ„์ด ์—ฌ๋Ÿฌ ๊ฐœ๋ผ๋ฉด ์‹œ์ž‘ ์ง„์—ด๋Œ€ ๋ฒˆํ˜ธ๊ฐ€ ๊ฐ€์žฅ ์ž‘์€ ๊ตฌ๊ฐ„์„ return ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ํ’€์ด

ํˆฌ ํฌ์ธํ„ฐ๋กœ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋‹ค. ์ž์„ธํ•œ ์›๋ฆฌ๋Š” ๋‹ค์Œ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ–ˆ๋‹ค.

https://hwan-shell.tistory.com/263

#include <string>
#include <vector>
#include <unordered_map>
#include <set>
#include <iostream>

using namespace std;

vector<int> solution(vector<string> gems) {
    vector<int> answer(2, -1);
    set<string> s;
    int minLength = 999'999;
    
    // ๋ช‡ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ
    for (auto g : gems)
        s.insert(g);
    
    
    int start = 0, end = 0;
    unordered_map<string, int> gm;
    while(true)
    {    
        // end๋ฅผ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ณด์„์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š” ์œ„์น˜๋กœ ์ด๋™์‹œํ‚จ๋‹ค. (0๋ถ€ํ„ฐ)
        int i = end;
        for(; i < gems.size(); ++i)
        {
            ++gm[gems[i]];
            if(gm.size() == s.size())
            {
                end = i;
                break;
            }
        }
        
        // end๊ฐ€ ๋๊นŒ์ง€ ๊ฐ”๋‹ค๋ฉด ๋ชจ๋“  ์ข…๋ฅ˜๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋”์ด์ƒ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ํƒ์ƒ‰ ์ข…๋ฃŒํ•œ๋‹ค
        if(i == gems.size())
            break;
        
        // start๋ฅผ ์˜ฎ๊ธฐ๋ฉฐ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ๋ณด์„์ด ํฌํ•จ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธ
        for(int i = start; i <= end; ++i)
        {
            if(gm[gems[i]] == 1)
            {
                start = i;
                break;
            }
            else
                --gm[gems[i]];
        }
        
        // ๊ธธ์ด์— ๋”ฐ๋ผ ์ •๋‹ต ๊ฐฑ์‹ ํ•˜๊ธฐ
        if(end-start < minLength)
        {
            minLength = end - start;
            answer[0] = start+1;
            answer[1] = end+1;
            //cout << start << ", " << end << endl;
        }
        
        // ๊ฒ€์ƒ‰ ์‹œ์ž‘ ์ง€์ ์„ ํ•˜๋‚˜์”ฉ ๋„˜๊ธด๋‹ค.
        gm.erase(gems[start]); // ์ฒซ๋ฒˆ์งธ ์ข…๋ฅ˜์˜ ๋ณด์„์€ ๋บ€๋‹ค (end๋ฅผ ํ•˜๋‚˜ ๋„˜๊ฒผ์„๋•Œ ์ด ์ข…๋ฅ˜์˜ ๋ณด์„์„ ํฌํ•จํ•ด์•ผํ•œ๋‹ค.)
        ++start;
        ++end;
    }
    
    
    return answer;
}
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿ–ฅ๏ธ Study Note > Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ์ˆซ์ž ๋ณ€ํ™˜ํ•˜๊ธฐ (C++)  (0) 2023.09.22
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ๋ฐฉ๋ฌธ ๊ธธ์ด (C++)  (0) 2023.09.21
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ๋“ฑ์‚ฐ์ฝ”์Šค ์ •ํ•˜๊ธฐ (C++)  (1) 2023.09.18
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ์–‘๊ณผ ๋Š‘๋Œ€ (C++)  (0) 2023.09.14
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ๋ฏธ๋กœ ํƒˆ์ถœ ๋ช…๋ น์–ด (C++)  (0) 2023.09.07
'๐Ÿ–ฅ๏ธ Study Note/Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ์ˆซ์ž ๋ณ€ํ™˜ํ•˜๊ธฐ (C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ๋ฐฉ๋ฌธ ๊ธธ์ด (C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ๋“ฑ์‚ฐ์ฝ”์Šค ์ •ํ•˜๊ธฐ (C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ์–‘๊ณผ ๋Š‘๋Œ€ (C++)
Beankong_
Beankong_
์ฃผ๋‹ˆ์–ด ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋ž˜๋จธ ๊ณต๋ถ€ ๊ธฐ๋ก
  • Beankong_
    Beankong's Devlog
    Beankong_
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด ๊ธ€ (146)
      • โ›… Daily (0)
      • ๐Ÿ–ฅ๏ธ Study Note (2)
        • C++ (1)
        • Unreal Engine (5)
        • Coding Test (123)
        • Design Patteren (5)
        • VCS (Git..) (1)
        • Server (1)
      • ๐Ÿงญ Devlog (8)
        • ์˜ค๋‹ต๋…ธํŠธ (4)
        • UE5 GameLift Server Test Project (1)
        • TIL (3)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ๋งํฌ

    • ๊ณต์ง€์‚ฌํ•ญ

    • ์ธ๊ธฐ ๊ธ€

    • ํƒœ๊ทธ

      UnrealEngine
      ๊ทธ๋ฆฌ๋””(greedy)
      ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
      ์•Œ๊ณ ๋ฆฌ์ฆ˜
      unrealengine build system
      ํ—ฌํ…Œ์ด์ปค
      programmers
      cpp
      unrealengine module
      ๊ฒŒ์ž„ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      propertyaccess
      UnrealEngine5
      ๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜
      ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
      ๊ฒŒ์ž„ ๋ชจ์ž‘
      OnlineSubsystem
      ๊ทธ๋ž˜ํ”„ ์ˆœํšŒ
      ๊ฒŒ์ž„ ๊ฐœ๋ฐœ
      ํ”„๋ฃŒ๊ทธ๋ž˜๋จธ์Šค
    • ์ตœ๊ทผ ๋Œ“๊ธ€

    • ์ตœ๊ทผ ๊ธ€

    • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
    Beankong_
    [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ๋ณด์„ ์‡ผํ•‘ (C++)
    ์ƒ๋‹จ์œผ๋กœ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”