๊ธฐ๋ก๋ฐฉ

Lv.1 : ์‚ผ์ด์‚ฌ ๋ณธ๋ฌธ

CodingTest/Java

Lv.1 : ์‚ผ์ด์‚ฌ

Soom_1n 2023. 4. 10. 15:26

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

 

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

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

programmers.co.kr



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

  • number ๋ฐฐ์—ด์—์„œ 3๊ฐœ๋ฅผ ๋ฝ‘์•˜์„ ๋•Œ ํ•ฉ์ด 0์ด๋˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
  • number.length C 3 ์˜ ์กฐํ•ฉ ๋ฌธ์ œ์ด๋‹ค.

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

class Solution {
    private int ans;
    public int solution(int[] number) {
        ans = 0;
        comb(number, 0, 0, 0);
        return ans;
    }
    
    private void comb(int[] number, int start, int cnt, int sum) {
        if (cnt == 3) {
            if (sum == 0) ans++;
            return;
        }
        for(int i = start; i <= number.length - (3-cnt); i++) {
            comb(number, i+1, cnt+1, sum+number[i]);
        }
    }
}

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

  • ์žฌ๊ท€ ๋ฉ”์„œ๋“œ comb๋กœ number๋ฐฐ์—ด์—์„œ 3๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋ฝ‘๋Š” ์กฐํ•ฉ์„ ๊ตฌํ˜„ํ–ˆ๋‹ค.
    • ์ˆซ์ž๋ฅผ ๋ฝ‘๋Š” ๊ฒƒ์€ sum ๋ณ€์ˆ˜์— ๋ˆ„์ ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
    • ์ค‘๋ณต์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๋ฝ‘์€ ์ˆ˜ ๋‹ค์Œ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋‹ค์Œ ์ˆซ์ž๋ฅผ ๋ฝ‘๋Š”๋‹ค.
    • ๋”ฐ๋ผ์„œ ์ธ๋ฑ์Šค๋Š” number.length - (3-cnt) ๊นŒ์ง€๋งŒ ํƒ์ƒ‰ํ•˜๋ฉด ๋œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ๊ธฐ๋ณธ์ ์ธ ์กฐํ•ฉ ๋ฌธ์ œ์—ฌ์„œ 1๋ถ„๋งŒ์— ํ’€์—ˆ๋‹ค.
  • number.length-(3-cnt)๋ฅผ ๊ณ„์‚ฐํ•œ ๊ฒƒ ๊นŒ์ง„ ์ข‹์•˜๋Š”๋ฐ, '<=' ๊ฐ€ ์•„๋‹Œ '<'๋กœ ์จ์„œ ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ๊ณ , ํ…Œ์ผ€๋ฅผ ํ†ตํ•ด ์žก์•„๋ƒˆ๋‹ค.

728x90

'CodingTest > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Lv.1 : ์˜น์•Œ์ด (2)  (0) 2023.04.10
Lv.1 : ์‚ผ์ด์‚ฌ  (0) 2023.04.10
Lv.1 : ์ˆซ์ž ์ง๊ฟ  (0) 2023.04.10
BOJ_17143 : ๋‚š์‹œ์™•  (0) 2023.04.07
BOJ_16928 : ๋ฑ€๊ณผ ์‚ฌ๋‹ค๋ฆฌ ๊ฒŒ์ž„  (0) 2023.04.07