๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿงฉ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด(Java)

[ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/Java ] ์†Œ์ˆ˜ ๋งŒ๋“ค๊ธฐ

by carrot0911 2025. 1. 16.

๋ฌธ์ œ ์„ค๋ช…

https://school.programmers.co.kr/learn/courses/30/lessons/12977

 

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

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

์ฃผ์–ด์ง„ ์ˆซ์ž ์ค‘ 3๊ฐœ์˜ ์ˆ˜๋ฅผ ๋”ํ–ˆ์„ ๋•Œ ์†Œ์ˆ˜๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๋“ค์ด ๋“ค์–ด์žˆ๋Š” ๋ฐฐ์—ด nums๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, nums์— ์žˆ๋Š” ์ˆซ์ž๋“ค ์ค‘ ์„œ๋กœ ๋‹ค๋ฅธ 3๊ฐœ๋ฅผ ๊ณจ๋ผ ๋”ํ–ˆ์„ ๋•Œ ์†Œ์ˆ˜๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ์˜ ๊ฐœ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ

  • nums์— ๋“ค์–ด ์žˆ๋Š” ์ˆซ์ž์˜ ๊ฐœ์ˆ˜๋Š” 3๊ฐœ ์ด์ƒ 50๊ฐœ ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • nums์˜ ๊ฐ ์›์†Œ๋Š” 1 ์ด์ƒ 1,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋ฉฐ, ์ค‘๋ณต๋œ ์ˆซ์ž๊ฐ€ ๋“ค์–ด์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

nums result
[1, 2, 3, 4] 1
[1, 2, 7, 6, 4] 4

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1

[1, 2, 4]๋ฅผ ์ด์šฉํ•ด์„œ 7์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2

[1, 2, 4]๋ฅผ ์ด์šฉํ•ด์„œ 7์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
[1, 4, 6]์„ ์ด์šฉํ•ด์„œ 11์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
[2, 4, 7]์„ ์ด์šฉํ•ด์„œ 13์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
[4, 6, 7]์„ ์ด์šฉํ•ด์„œ 17์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ

class Solution {
    public int solution(int[] nums) {
        int answer = 0;

		// ์ฒซ ๋ฒˆ์งธ ์ˆซ์ž์˜ ์œ„์น˜
        for (int i = 0; i < nums.length - 2; i++) {
        	// ๋‘ ๋ฒˆ์งธ ์ˆซ์ž์˜ ์œ„์น˜
            for (int j = i + 1; j < nums.length - 1; j++) {
            	// ์„ธ ๋ฒˆ์งธ ์ˆซ์ž์˜ ์œ„์น˜
                for (int k = j + 1; k < nums.length; k++) {
                	// 3๊ฐœ์˜ ์ˆซ์ž ํ•ฉ ๊ตฌํ•˜๊ธฐ
                    int sum = nums[i] + nums[j] + nums[k];
                    
                    // ์†Œ์ˆ˜์ธ์ง€ ํ™•์ธํ•˜๊ธฐ
                    if (isPrime(sum)) {
                        answer++;  // ๋งŒ์•ฝ ์†Œ์ˆ˜๊ฐ€ ๋งž๋‹ค๋ฉด answer๋Š” 1 ์ฆ๊ฐ€ํ•œ๋‹ค.
                    }
                }
            }
        }
        
        return answer;  // answer ๋ฐ˜ํ™˜ํ•˜๊ธฐ
    }
    
    // ์†Œ์ˆ˜์ธ์ง€ ํ™•์ธํ•˜๋Š” ๋ฉ”์„œ๋“œ ์ƒ์„ฑ
    private boolean isPrime(int num) {
        
        // num์ด 2์ธ์ง€ ํ™•์ธ
        if(num == 2) {
            return true;  // 2๊ฐ€ ๋งž๋‹ค๋ฉด true ๋ฐ˜ํ™˜
        }
        
        // 2๋ถ€ํ„ฐ ์ž๊ธฐ ์ž์‹ (num) ์ „๊นŒ์ง€ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์ˆซ์ž๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ
        for (int i = 2; i < num; i++) {
            if (num % i == 0) {
                return false;  // ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง„๋‹ค๋ฉด false ๋ฐ˜ํ™˜
            }
        }
        
        return true;  // ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€์ง€ ์•Š์•˜๋‹ค๋ฉด true ๋ฐ˜ํ™˜
     }
}