๋ฌธ์
์ฝ๋
#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๊ฐ๋ก ์ธํ ํ๋ค.
- ์์ด๋ฒ๋ฆฐ ์ธ์์ ์ฒด์ก๋ณต์ ๊ฐ์์ํจ๋ค.
- ์ฌ์ ๋ณต์ ๊ฐ์ง ์ธ์์ ์ฒด์ก๋ณต์ ์ฆ๊ฐ์ํจ๋ค.
๋ณธ์ธ์ ์ฒด์ก๋ณต ๊ฐ์๊ฐ 0์ผ ๋ ์ข์ฐ ์์์ ์ดํด์ ๊ทธ ์ฌ๋์ด ์ฌ์ ๋ณต์ด ์์ผ๋ฉด ๊ทธ์ฌ๋ ๊ฑธ ๊ฐ์ ธ์จ๋ค. ๋ค๋ง ์ฌ๊ธฐ์ ๋ณธ์ธ์ด ์ฒซ ๋ฒ์งธ์ผ ๋๋ ์ผ์ชฝ์ด ์๊ฒ๋, ๋ง์ง๋ง์ผ ๋๋ ์ค๋ฅธ์ชฝ์ด ์๊ฒ๋ ์ค์ ํด์ฃผ์ด์ผ ํ๋ค.
๋๊ธ