[Programmers] Lv2. ๊ตฌ๋ช
๋ณดํธ | C++
2023. 6. 13. 22:55ใCoding Test/Programmers
๐๋ฌธ์ ๋ณด๋ฌ๊ฐ๊ธฐ
๐จ๐ปํ์ด ๊ณผ์
๋ฌธ์ ๋ฅผ ์ ์ฝ์ด์ผ ํฉ๋๋ค. ๋ณดํธ์ ํ ์ ์๋ ์ฌ๋์ ๋จ ๋ ๋ช ์ ๋๋ค.
1. ์ฌ๋๋ค์ ๋ฌด๊ฒ๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ
2. ๊ฐ์ฅ ์์ ๋ฌด๊ฒ๋ฅผ ์ง๋ ์ฌ๋์ ์ธ๋ฑ์ค(li = 0)์ ๊ฐ์ฅ ๋ฌด๊ฑฐ์ด ๋ฌด๊ฒ๋ฅผ ์ง๋ ์ฌ๋์ ์ธ๋ฑ์ค(hi = people.size() - 1)๋ฅผ ์ง์
3. people[li] + people[hi] > limit ์ด๋ผ๋ฉด, ์ ์ผ ๋ฌด๊ฑฐ์ด ์ฌ๋ ํผ์ ๋ฐ์ ํ ์ ์์ผ๋ฏ๋ก answer++, hi--
4. people[li] + people[hi] <= limit ์ด๋ผ๋ฉด, ๋์ด ํ์์ ๋ณด๋ผ ์ ์์ผ๋ฏ๋ก answer++, li++, hi--
5. li > hi๊ฐ ๋ ๋๊น์ง 3, 4๋ฒ์ ๋ฐ๋ณต
โ๏ธ์์ค ์ฝ๋ ๋ฐ ๊ฒฐ๊ณผ
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<int> people, int limit) {
sort(people.begin(), people.end());
int answer = 0;
int li = 0; // ๋ชธ๋ฌด๊ฒ ์์ ์ฌ๋ index
int hi = people.size() - 1; // ๋ชธ๋ฌด๊ฒ ๋ง์ ์ฌ๋ index
while (li <= hi) {
if (li == hi) {
answer++;
break;
}
else if (people[li] + people[hi] <= limit) {
answer++;
li++;
hi--;
}
else {
answer++;
hi--;
}
}
return answer;
}
728x90
๋ฐ์ํ
'Coding Test > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] Lv2. n^2 ๋ฐฐ์ด ์๋ฅด๊ธฐ | C++ (0) | 2023.06.14 |
---|---|
[Programmers] Lv2. ์ฐ์ ๋ถ๋ถ ์์ด ํฉ์ ๊ฐ์ | C++ (1) | 2023.06.14 |
[Programmers] Lv2. ์ง์ง์ด ์ ๊ฑฐํ๊ธฐ | C++ (0) | 2023.06.12 |
[Programmers] Lv2. ํผ๋ณด๋์น ์ | C++ (0) | 2023.06.12 |
[Programmers] Lv2. ์ด์ง ๋ณํ ๋ฐ๋ณตํ๊ธฐ | C++ (0) | 2023.06.12 |