๋ฌธ์ ๋งํฌ
https://programmers.co.kr/learn/courses/30/lessons/42885
๋ฌด์ธ๋์ ๊ฐํ ์ฌ๋๋ค์ ๋ชจ๋ ๊ตฌํ๊ธฐ ์ํด ํ์ํ ์ต์ ๊ตฌ๋ช ๋ณดํธ ์๋ฅผ ๋ฆฌํดํ๋ ๋ฌธ์ .
ํ์ด
๋ณดํธ์๋ ์ต๋ 2๋ช ์ ์ฌ๋์ด ํ ์ ์์ผ๋ฉฐ, ๋ฌด๊ฒ ์ ํ์ด ์๋ค.
- ํ์ด ์๊ณ ๋ฆฌ์ฆ
๋ฌด๊ฒ๊ฐ ๊ฐ๋ฒผ์ด ์ฌ๋์ ์ต๋ํ ๋ฌด๊ฒ๊ฐ ๋ฌด๊ฑฐ์ด ์ฌ๋์ด๋ ๊ฐ์ด ํ์ผ ์ต๋ํ ๋ง์ ์ฌ๋๋ค์ด ์ง์ ์ด๋ค์ ๋ณดํธ์ ํ ์ ์๋ค.
์ผ๋จ ํ์ถํด์ผํ ์ฌ๋๋ค์ ๋ฌด๊ฒ์์ผ๋ก ์ ๋ ฌํด์ค๋ค.
ํฌํฌ์ธํฐ ๋ฐฉ์์ ์ด์ฉํด์ ๋๊ฐ์ผํ ์ฌ๋์ค ๊ฐ์ฅ ๊ฐ๋ฒผ์ด ์ฌ๋ ํ ๋ช (์ดํ L)๊ณผ ๊ฐ์ฅ ๋ฌด๊ฑฐ์ด์ฌ๋ ํ ๋ช (์ดํ R)์ ๊ฐ๋ฆฌํจ๋ค.
๋ง์ฝ ๋ ์ฌ๋์ ๋ฌด๊ฒ ํฉ์ด
1. limit๋ณด๋ค ํฌ๋ฉด : ๋ฌด๊ฒ๋ฅผ ์ค์ฌ์ผํ๋ฏ๋ก ํ์ฌ ๊ฐ๋ฆฌํค๊ณ ์๋ R์ ํ ์นธ ์์ผ๋ก ๋น๊ธด๋ค. R = R - 1.
2. limit๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ผ๋ฉด : ๊ฐ์ด ๋ณดํธ๋ฅผ ํ ์ ์์ผ๋ฏ๋ก ๋ ์ฌ๋์ ํ์น์ํจ๋ค. L = L + 1, R = R - 1.
์ด ๊ณผ์ ์ L๊ณผ R์ด ๊ฐ์์ง๊ธฐ ์ ๊น์ง ๋ฐ๋ณตํ๋ค.
L >= R์ธ ๊ฒฝ์ฐ๋ L์ ๊ฐ๋ฒผ์ด ์ฌ๋์ R์ ๋ฌด๊ฑฐ์ด ์ฌ๋์ ๊ฐ๋ฆฌํจ๋ค๋ ๊ธฐ์ค์ ๋ชจ์๋๋ฏ๋ก ์ด๋๋ ๋ ์ด์ ์ง์ ์ง์ ์ ์๋ ์ธ์์ด ์๋ค๊ณ ํ๋จํ๊ณ ๋ฐ๋ณต๋ฌธ ์ข ๋ฃ.
=> ํ์นํ์ง ๋ชปํ ์ฌ๋๋ค์ ํผ์์ ํ์นํ๋ค.
์ฝ๋ ์์ฑ
|
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
const int MAX_N = 50000 + 5;
bool is_escaped[MAX_N];
int solution(vector<int> people, int limit) {
int answer = 0;
sort(people.begin(), people.end());
int L = 0; int R = people.size() - 1;
for(int i = 0; i<people.size() - 1; i++){
if(people[L] + people[R] <= limit){
is_escaped[L] = is_escaped[R] = true;
L++, R--;
answer++;
}
else R--;
if(L >= R)
break;
}
for(int i = 0; i<people.size(); i++)
if(!is_escaped[i])
answer++;
return answer;
}
|
cs |
'ํ๋ก๊ทธ๋๋จธ์ค > 2๋จ๊ณ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค Lv2] : ๊ฐ์ฅ ํฐ ์ (0) | 2022.06.29 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค Lv2] : ์กฐ์ด์คํฑ (0) | 2022.06.22 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv2] : ํ๊ฒ ๋๋ฒ (0) | 2022.06.20 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv2] : ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ (0) | 2022.06.15 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv2] : ํ๋ฆฐํฐ (0) | 2022.06.15 |