๊ธฐ๋ก๋ฐฉ

Lv.2 : ๊ตฌ๋ช…๋ณดํŠธ ๋ณธ๋ฌธ

CodingTest/Java

Lv.2 : ๊ตฌ๋ช…๋ณดํŠธ

Soom_1n 2023. 9. 12. 22:02

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

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

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

programmers.co.kr



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • ์‚ฌ๋žŒ์„ ๋ฌด๊ฒŒ ์ œํ•œ์ด limit์ธ ๊ตฌ๋ช… ๋ณดํŠธ๋กœ ๊ฐ๊ฐ ์ตœ๋Œ€ 2๋ช…์”ฉ ๊ตฌ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ชจ๋“  ์‚ฌ๋žŒ์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ๋ช…๋ณดํŠธ ๊ฐœ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๐Ÿ”ธ ๋ฌธ์ œ ํ’€์ด ๐Ÿ”ธ

  • ๊ทธ๋ฆฌ๋””์ ์œผ๋กœ ์ ‘๊ทผํ•œ๋‹ค.
  • ์‚ฌ๋žŒ๋“ค์˜ ๋ชธ๋ฌด๊ฒŒ๋ฅผ ์ •๋ ฌํ•œ๋‹ค.
    • ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ–ˆ์„๋•Œ ๊ฐ€์žฅ ๋ฌด๊ฑฐ์šด ์‚ฌ๋žŒ์ด ์˜ค๋ฅธ์ชฝ ๋์— ์žˆ๋‹ค.
    • ๊ฐ€์žฅ ๋ฌด๊ฑฐ์šด ์‚ฌ๋žŒ์„ ์˜ฎ๊ธธ ๋•Œ ๊ฐ€์žฅ ๊ฐ€๋ฒผ์šด ์‚ฌ๋žŒ๊ณผ ๊ฐ™์ด ํƒˆ ์ˆ˜ ์—†๋‹ค๋ฉด, ํ˜ผ์ž๋งŒ ํƒˆ ์ˆ˜ ์žˆ๋‹ค.
    • ๊ฐ€์žฅ ๋ฌด๊ฑฐ์šด ์‚ฌ๋žŒ + ๊ฐ€์žฅ ๊ฐ€๋ฒผ์šด ์‚ฌ๋žŒ ๋‘˜์ด ํƒˆ ์ˆ˜ ์žˆ์œผ๋ฉด ํƒ€๊ณ  ํƒˆ์ถœํ•˜๋ฉด ๋œ๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

import java.util.Arrays;

class Solution {
    public int solution(int[] people, int limit) {
        
        Arrays.sort(people);
        
        int answer = 0;
        int left = 0;
        int right = people.length - 1;
        
        while(left <= right) {
            if(people[left] + people[right] <= limit) {
                left++;
            }
            answer++;
            right--;
        }
        
        return answer;
    }
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • ์‚ฌ๋žŒ๋“ค์˜ ๋ชธ๋ฌด๊ฒŒ ๋ฐฐ์—ด people์„ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•œ๋‹ค.
  • left๋Š” ์™ผ์ชฝ๋ ์ธ๋ฑ์Šค, right๋Š” ์˜ค๋ฅธ์ชฝ๋ ์ธ๋ฑ์Šค๋กœ ์‹œ์ž‘ํ•œ๋‹ค.
  • ๋‘ ์ธ๋ฑ์Šค๊ฐ€ ๊ฐ™์•„ ์งˆ ๋•Œ๊นŒ์ง€ ๊ณ„์‚ฐ์„ ๋ฐ˜๋ณตํ•œ๋‹ค.
    • ๋‘ ์‚ฌ๋žŒ์ด ๋ชจ๋‘ ํƒˆ ์ˆ˜ ์žˆ์œผ๋ฉด ๋‘˜ ๋‹ค ํƒ€๋ฏ€๋กœ, left๋Š” +1, right๋Š” -1ํ•œ๋‹ค.
    • ๋‘ ์‚ฌ๋žŒ์ด ๋ชจ๋‘ ํƒˆ ์ˆ˜ ์—†์œผ๋ฉด ๋ฌด๊ฑฐ์šด ์‚ฌ๋žŒ๋งŒ ํƒ€์•ผ๋˜๋ฏ€๋กœ, right๋งŒ -1ํ•œ๋‹ค.
    • ๋ฐ˜๋ณต ํ•œ ๋ฒˆ์— ๋ณดํŠธ ํ•˜๋‚˜๊ฐ€ ์ถœ๋ฐœํ•˜๋ฏ€๋กœ, answer +1 ํ•œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ์ฒ˜์Œ์—๋Š” ํ•œ ๋ณดํŠธ์— ์‚ฌ๋žŒ๋“ค์ด ์ตœ์ ์œผ๋กœ ํƒ€์•ผ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.
    • ๋‚จ์€ ๋ฌด๊ฒŒ ๊ณต๊ฐ„์ด ์ตœ์†Œ๊ฐ€ ๋˜๋„๋ก ๋ฌด๊ฑฐ์šด ์ชฝ์—์„œ ๋‚ด๋ ค๊ฐ€๋ฉฐ ํƒœ์› ๋‹ค. ์ด ๊ฒฝ์šฐ ์ •๋ ฌ์„ ์ œ์™ธํ•˜๊ณ  O(n^2)๊ฐ€ ๊ฑธ๋ฆฐ๋‹ค.
    • ํ•˜์ง€๋งŒ, ๋ฌธ์ œ์—์„œ 2๋ช…์œผ๋กœ ์ œํ•œํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š”ํ•œ๊ฑด ์ตœ์ ์œผ๋กœ ํƒœ์šฐ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ์—ˆ๋‹ค.
    • ๊ฐ€์žฅ ๋ฌด๊ฑฐ์šด ์‚ฌ๋žŒ์„ ํƒœ์šธ ๋•Œ, ๊ฐ€์žฅ ๊ฐ€๋ฒผ์šด ์‚ฌ๋žŒํ•˜๊ณ ๋งŒ ๋น„๊ตํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค๋Š”๊ฒŒ ํ•ต์‹ฌ์ด์—ˆ๋‹ค.
  • ์ฒ˜์Œ๋ถ€ํ„ฐ ํƒ์š•์ ์œผ๋กœ ์ ‘๊ทผํ•ด์•ผํ•œ๋‹ค ํŒŒ์•…ํ–ˆ๋Š”๋ฐ, ๊ทธ ๋ฐฉํ–ฅ์„ฑ์ด ์ž˜๋ชป๋˜์„œ ํ‹€๋ฆฌ๊ฒŒ ๋œ๊ฒŒ ์•„์‰ฝ๋‹ค.

728x90