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
- 프로그래머스
- Spring Web MVC
- 재귀와반복문
- 재귀함수
- Array.asList
- 알고리즘
- 백준
- OOP
- vm인스턴스생성
- 코드스테이츠 백엔드
- 투포인터알고리즘
- List.of
- 버블정렬
- 백준 11659
- 코드스테이츠
- 인텔리제이
- 싱글톤패턴
- Spring MVC 동작원리
- 스택
- 자바
- GCP
- MySQL
- 11659
- 클라우드에서 도커 실행하기
- Spring MVC 구성요소
- 성능테스트툴
- java
- 구간합구하기
- 코딩테스트
- String.valueOf()
Archives
- Today
- Total
순간을 기록으로
[Java] 소수만들기 본문
문제
https://programmers.co.kr/learn/courses/30/lessons/12977#
주의할 점
소수란. 1과 자기 자신으로만 나누어 질 수 있는 자연수이다. 예를들어 7은 1과 7로만 나눠질 수 있다.(= 1과 7로 나눴을 때 나머지가 0이다, 2, 3, 4, 5, 6으로는 나눠질 수 없다.) 그럼 자연수 N(N>=3)이라고 했을 때 N이 소수인지 판별하려면 2부터 N-1까지 모든 자연수를 확인해야 할까? 아니다. 절반까지만 확인하면 된다. N=100이면 N/2(=50) 즉 절반이 넘어가게 되면 나누어 떨어질 수 없다. 따라서 절반 이하만 확인하면 된다.
배열에서 3개의 카드를 골라야 하므로 3중 for문을 사용한다. 그리고 서로 다른 카드를 뽑아야 하기 때문에 j = i+1, k=j+1으로 작성한다.
코드
package 프로그래머스.레벨1.소수만들기;
public class Solution {
public int solution(int[] nums) {
int answer=0;
int sum;
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++) {
sum = nums[i] + nums[j] + nums[k];
if (isPrime(sum))
answer++;
}
}
}
return answer;
}
private boolean isPrime(int num) {
if (num < 2) // 0, 1
return false;
else if (num == 2) // 2이면 소수니깐
return true;
else { // 3이상이면
for (int i=2; i<num/2; i++) {
if (num%i == 0) // 나머지가 0이면 나눠진다는 말이므로
return false;
}
return true; // 나눠지는게 없었으므로 소수
}
}
public static void main(String[] args) {
Solution s = new Solution();
int[] nums1 = {1, 2, 3, 4};
System.out.println(s.solution(nums1));
int[] nums2 = {1, 2, 7, 6, 4};
System.out.println(s.solution(nums2));
}
}
느낀점
대충 감으로 이렇게 되겠지 말고 이해가 되지 않는다면 디버깅을 하면서 구체적으로 어떤식으로 돌아가는지 확인하자
'Problem Solving' 카테고리의 다른 글
[Java] 회의실 배정 (0) | 2022.01.14 |
---|---|
[JAVA] 체육복 (0) | 2022.01.14 |
[Java] 없는 숫자 더하기 (0) | 2022.01.13 |
[Java] 키패드 누르기 (0) | 2022.01.13 |
[Java] 공주구하기 (0) | 2022.01.12 |
Comments