티스토리 뷰
[Java/Programmers]
Lv.1 소수 만들기
( summer/winter coding (~2018) )
⬇︎ ⬇︎ ⬇︎ 문 제 링 크 ⬇︎ ⬇︎ ⬇︎
programmers.co.kr/learn/courses/30/lessons/12977
코딩테스트 연습 - 소수 만들기
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때
programmers.co.kr
입/출력
(입력)
숫자들이 들어있는 배열 nums
- nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.
- nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.
(출력)
nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수
풀이
public static 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++) {
// 숫자 세개 더하기
int sum = nums[i] + nums[j] + nums[k];
// sum 값 소수 판별
if(isPrime(sum)) {
answer++;
}
}
}
}
return answer;
}
// 소수 판별 메소드
public static boolean isPrime(int number) {
// 0 과 1
if(number == 0 || number == 1) {
return false;
}
// 2
if(number == 2) {
return true;
}
// 그 외 숫자
// 제곱근 함수 : Math.sqrt()
for(int i = 2; i <= Math.sqrt(number); i++) {
// 소수가 아닐경우
if(number % i == 0) {
return false;
}
}
// 반복문에서 벗어난 경우 약수가 자기 자신과 1밖에 없는 경우이므로 true 반환.
return true;
}
후기
음.... 풀이방법이 바로 생각나지 않는건 아니었는데,
중첩 for문 쓰기 싫어서 조합으로 해보려다가 잘 안되서 그냥 중첩 for문을 사용해 문제를 해결했다.
검색해봐도 조합으로 푼 풀이는 잘 안나오길래 그냥 포기...ㅠㅠ
정답 맞춘 후 다른 분들 코드 보니까 조합으로 푼 코드가 더 복잡하고 길길래 중첩 for문으로 푸는게 더 나을수도 있겠다는 생각을 했다.
참고 링크
JAVA [자바] - 소수 구하는 알고리즘 및 구현
들어가기 전에 소수 [Prime Number] 소수의 정의는 1보다 큰 자연수 중 1 과 그 수 자기 자신만을 약수로 갖는 자연수를 의미한다는 점은 누구나 알고 있을 것이다. 즉, 소수의 약수는 2개만을 갖고,
st-lab.tistory.com
youngest-programming.tistory.com/283
[알고리즘] 프로그래머스 소수 만들기 -Summer/Winter Coding(~2018)-
https://programmers.co.kr/learn/courses/30/lessons/12977 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업
youngest-programming.tistory.com
'Algorithm' 카테고리의 다른 글
[Java/Programmers] Lv.1 신규 아이디 추천 (0) | 2021.04.10 |
---|---|
[Java/Programmers] Lv.1 두 개 뽑아서 더하기 (0) | 2021.04.09 |
[Java/Programmers] Lv.2 카카오프렌즈 컬러링북 (0) | 2021.04.08 |
[Java/Programmers] Lv.1 폰켓몬 (0) | 2021.04.07 |
[Java/백준(boj)] 2010번. 플러그 (0) | 2021.03.06 |