KimMinJun
Coding Note
KimMinJun
전체 방문자
오늘
어제
  • 분류 전체보기 (487)
    • ALGORITHM (11)
      • 정렬 (6)
      • 최단경로 (1)
      • 자료구조 (1)
      • 슬라이딩 윈도우 (1)
      • etc (2)
    • Git (5)
    • Web (24)
      • Vanilla JS (13)
      • TS (2)
      • React (7)
      • ETC (1)
    • React 공식문서 (번역, 공부) (11)
      • Quick Start (2)
      • Installation (0)
      • Describing the UI (9)
      • Adding Interactivity (0)
      • Managing State (0)
      • Escape Hatches (0)
    • Next.js 공식문서 (번역, 공부) (3)
      • Getting Started (2)
      • Building Your Application (1)
    • PS (432)
      • 백준 (187)
      • Programmers (105)
      • CodeUp (21)
      • STL (3)
      • 제코베 JS 100제 (50)
      • SWEA (0)
      • LeetCode (65)
    • IT (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 관리

공지사항

인기 글

태그

  • recursion
  • C++
  • Level1
  • Level 0
  • 백준
  • 수학
  • js
  • string
  • LeetCode
  • 다이나믹 프로그래밍
  • Level 2
  • C
  • Level 1
  • 그래프
  • 정렬
  • codeup
  • programmers
  • tree
  • 문자열
  • 제코베 JS 100제

최근 댓글

최근 글

hELLO · Designed By 정상우.
KimMinJun

Coding Note

PS/Programmers

Programmers / Level1 / 소수 만들기 / C++ / JS

2021. 10. 26. 16:35

문제 설명

주어진 숫자 중 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을 만들 수 있습니다.

 

 

<C++> 2021.10.26

#include <vector>
#include <iostream>
using namespace std;

bool isPrime(int n) {
    if(n == 0 || n == 1) return false;
    
    for(int i=2; i*i<=n; i++) {
        if(n % i == 0)
            return false;
    }
    
    return true;
}

int solution(vector<int> nums) {
    int answer = 0;
    int len = nums.size();
    
    for(int i=0; i<len; i++) {
        for(int j=i+1; j<len; j++) {
            for(int k=j+1; k<len; k++) {
                int n = nums[i] + nums[j] + nums[k];
                
                if(isPrime(n) == true)
                    answer++;
            }
        }
    }
    
    return answer;
}

이 문제를 로직을 효율적으로 짜지 못한거같아서 수정이 필요할것 같다.

 

일단 본인이 짠대로 설명을 해보자면, 소수를 구하는 함수를 외부에 따로 두었고, 소수면 true를 반환하도록 bool형으로 만들었다.

 

그래서 3중 반복문을 이용해서 3개의 합이 소수일경우, answer++를 해주고 answer을 리턴한다.


 

<JS> 2022.05.01

function isPrime(n) {
    for(let i=2; i<=Math.sqrt(n); i++) {
        if(n % i == 0) return false;
    }
    return true;
}

function solution(nums) {
    let answer = 0;
    const len = nums.length;
    
    for(let i=0; i<len; i++) {
        for(let j=i+1; j<len; j++) {
            for(let k=j+1; k<len; k++) {
                let sum = 0;
                sum += nums[i] + nums[j] + nums[k]
                
                if(isPrime(sum)) answer++;
            }
        }
    }    
    
    return answer;
}

 

저작자표시 (새창열림)

'PS > Programmers' 카테고리의 다른 글

Programmers / Level 1 / K번째수 / C++  (0) 2021.10.27
Programmers / Level 1 / 완주하지 못한 선수 / C++  (0) 2021.10.26
Programmers / Level1 / 내적 / C++c  (0) 2021.10.26
Programmers / Level1 / 음양 더하기 / C+  (0) 2021.10.15
    'PS/Programmers' 카테고리의 다른 글
    • Programmers / Level 1 / K번째수 / C++
    • Programmers / Level 1 / 완주하지 못한 선수 / C++
    • Programmers / Level1 / 내적 / C++c
    • Programmers / Level1 / 음양 더하기 / C+
    KimMinJun
    KimMinJun

    티스토리툴바