๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๐Ÿ”—๋ฌธ์ œ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

๐Ÿ‘จ‍๐Ÿ’ปํ’€์ด ๊ณผ์ •

 

๋ฌธ์ œ๋ฅผ ์ž˜ ์ฝ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณดํŠธ์— ํƒˆ ์ˆ˜ ์žˆ๋Š” ์‚ฌ๋žŒ์€ ๋‹จ ๋‘ ๋ช…์ž…๋‹ˆ๋‹ค.

 

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
๋ฐ˜์‘ํ˜•