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

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

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


GitHub

LinkedIn

GitHub

LinkedIn