๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm ๐Ÿง‘๐Ÿป‍๐Ÿ’ป/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค(Programmers)

[c++] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ฒด์œก๋ณต( Level 1)

by ์•ˆ์ฃผํ˜• 2021. 10. 22.

๋ฌธ์ œ

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์ฒด์œก๋ณต

์ ์‹ฌ์‹œ๊ฐ„์— ๋„๋‘‘์ด ๋“ค์–ด, ์ผ๋ถ€ ํ•™์ƒ์ด ์ฒด์œก๋ณต์„ ๋„๋‚œ๋‹นํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ ์—ฌ๋ฒŒ ์ฒด์œก๋ณต์ด ์žˆ๋Š” ํ•™์ƒ์ด ์ด๋“ค์—๊ฒŒ ์ฒด์œก๋ณต์„ ๋นŒ๋ ค์ฃผ๋ ค ํ•ฉ๋‹ˆ๋‹ค. ํ•™์ƒ๋“ค์˜ ๋ฒˆํ˜ธ๋Š” ์ฒด๊ฒฉ ์ˆœ์œผ๋กœ ๋งค๊ฒจ์ ธ ์žˆ์–ด, ๋ฐ”๋กœ ์•ž๋ฒˆ

programmers.co.kr

 

์ฝ”๋“œ

#include <string>
#include <vector>
#include <map>

using namespace std;

int solution(int n, vector<int> lost, vector<int> reserve) {
    int answer = 0;
    map<int,int> student;
    for(int i=1; i<=n; i++) student[i] = 1; // ์ฒด์œก๋ณต ์…‹ํŒ…
    for(int peo:lost) student[peo]--;   // ์ฒด์œก๋ณต ์žƒ์–ด๋ฒ„๋ฆผ
    for(int reser: reserve) student[reser]++;   // ์—ฌ์œ  ์ฒด์œก๋ณต ๊ฐ€์ง€๊ณ  ์žˆ์Œ
    
    for(auto it = student.begin(); it!=student.end(); it++){
        if(it->second==0){  // ์ฒด์œก๋ณต์ด ์—†์„ ๊ฒฝ์šฐ
            
            int left = (it->first!=0)?(it->first)-1:-1;   // ์™ผ์ชฝ ์‚ฌ๋žŒ
            int right = (it->first!=n)?(it->first)+1:-1;  // ์˜ค๋ฅธ์ชฝ ์‚ฌ๋žŒ
            
            if(student[left]>1){    // ์™ผ์ชฝ ์‚ฌ๋žŒ์ด ์—ฌ์œ ๋ณต์ด ์žˆ์„ ๊ฒฝ์šฐ
                student[left]--;    // ๋นŒ๋ ค์คŒ
                it->second++;   
            }
            else if(student[right]>1){ // ์˜ค๋ฅธ์ชฝ ์‚ฌ๋žŒ์ด ์—ฌ์œ ๋ณต์ด ์žˆ์„ ๊ฒฝ์šฐ
                student[right]--;   //๋นŒ๋ ค์คŒ
                it->second++;
            }
        }
    }
    
     for(auto it = student.begin(); it!=student.end(); it++){
        if(it->second!=0) answer++;   
     }
    
    return answer;
}

 

ํ’€์ด(10๋ถ„)

๊ฐ„๋‹จํ•œ ์ž๋ฃŒ๊ตฌ์กฐ ๋ฌธ์ œ์˜€์Šต๋‹ˆ๋‹ค. 

  1. ์ฒ˜์Œ์— ๋ชจ๋“  ์ธ์›์˜ ์ฒด์œก๋ณต์„ 1๊ฐœ๋กœ ์„ธํŒ…ํ•œ๋‹ค.
  2. ์žƒ์–ด๋ฒ„๋ฆฐ ์ธ์›์€ ์ฒด์œก๋ณต์„ ๊ฐ์†Œ์‹œํ‚จ๋‹ค.
  3. ์—ฌ์œ ๋ณต์„ ๊ฐ€์ง„ ์ธ์›์€ ์ฒด์œก๋ณต์„ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

๋ณธ์ธ์˜ ์ฒด์œก๋ณต ๊ฐœ์ˆ˜๊ฐ€ 0์ผ ๋•Œ ์ขŒ์šฐ ์–‘์˜†์„ ์‚ดํŽด์„œ ๊ทธ ์‚ฌ๋žŒ์ด ์—ฌ์œ ๋ณต์ด ์žˆ์œผ๋ฉด ๊ทธ์‚ฌ๋žŒ ๊ฑธ ๊ฐ€์ ธ์˜จ๋‹ค. ๋‹ค๋งŒ ์—ฌ๊ธฐ์„œ ๋ณธ์ธ์ด ์ฒซ ๋ฒˆ์งธ์ผ ๋•Œ๋Š” ์™ผ์ชฝ์ด ์—†๊ฒŒ๋”, ๋งˆ์ง€๋ง‰์ผ ๋•Œ๋Š” ์˜ค๋ฅธ์ชฝ์ด ์—†๊ฒŒ๋” ์„ค์ •ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

๋Œ“๊ธ€