Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 자바
- two pointers
- java
- Binary Search
- Math
- implement
- 코테
- database
- SQL
- Stack
- Method
- greedy
- 구현
- string
- Tree
- Class
- Number Theory
- Data Structure
- 코딩테스트
- simulation
- hash table
- sorting
- array
- bit manipulation
- 파이썬
- dynamic programming
- geometry
- Matrix
- Binary Tree
- Counting
Archives
- Today
- Total
코린이의 소소한 공부노트
[프로그래머스/Lv.1] 소수 만들기 본문
1. Input
1) 숫자들이 들어있는 배열 nums
2. Output
1) nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 수
2) 소수는 약수의 개수가 2개인 자연수
3. Constraint
1) nums에 들어있는 숫자의 개수는 3개 이상 50개 이하
2) nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않다.
4. Example
Input: nums={1,2,7,6,4} -> Output: 4
설명:
1 + 2 + 4 = 7
1 + 4 + 6 = 11
2 + 4 + 7 = 13
4 + 6 + 7 = 17
나머지 경우는 모두 소수가 아니다.
5. Code
1) 첫 코드(2022/??)
int answer = 0;
int sum = 0;
// nums[i] + nums[j] + nums[k] = prime number?
for(int i=0 ; i<nums.length-2 ; i++) {
sum = nums[i];
for(int j=i+1 ; j<nums.length-1 ; j++) {
sum += nums[j];
for(int k=j+1 ; k<nums.length ; k++) {
sum += nums[k];
if(isPrime(sum)) answer++;
sum -= nums[k];
} // for k
sum -= nums[j];
} // for j
sum -= nums[i];
} // for i
return answer;
// 소수 판별 메서드
static boolean isPrime(int n) {
for(int i=2 ; i<n ; i++) {
if(n%i == 0) return false;
}
return true;
'코딩테스트 풀이 > JAVA' 카테고리의 다른 글
[프로그래머스/Lv.1] x만큼 간격이 있는 n개의 숫자 (0) | 2022.11.22 |
---|---|
[프로그래머스/Lv.1] 직사각형 별찍기 (0) | 2022.11.22 |
[프로그래머스/Lv.1] [1차] 비밀지도 (0) | 2022.11.22 |
[프로그래머스/Lv.1] k번째 수 (0) | 2022.11.22 |
[프로그래머스/Lv.1] 모의고사 (0) | 2022.11.22 |