일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- db
- JUnit
- aws
- Github
- 토비의 스프링
- QueryDSL
- template
- AOP
- JPA
- EC2
- 사이드 프로젝트
- workflow
- kotlin
- mutable
- CodeDeploy
- Action
- redis
- springboot
- compiler
- rds
- string
- Spring
- git
- build_test
- java
- 알고리즘
- immutable
- Airflow
Archives
- Today
- Total
개발 일기
프로그래머스 레벨1 소수구하기 (JAVA) 본문
퇴근 후 너무 피곤하지만
하루에 한 문제 정도는 풀어보기 위하여 오늘도 레벨 1부터 한 문제 씩 풀어본다..
오늘 푼 문제는
https://programmers.co.kr/learn/courses/30/lessons/12977
코딩테스트 연습 - 소수 만들기
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때
programmers.co.kr
프로그래머스 레벨1 소수 만들기 다
푼 모든 알고리즘 문제는 GitHub
깃허브에도 올려놓았다.
import java.util.ArrayList;
import java.util.List;
/**
* 소수 만들기
*/
public class Programmers12977 {
public static void main(String[] args) {
// System.out.println(solution(new int[]{1,2,3,4}));
System.out.println(solution(new int[]{1, 2, 7, 6, 4}));
}
public static int solution(int[] nums) {
List<Integer> list = new ArrayList<>();
for (int i = 0; i < nums.length; i++) {
for (int j = i + 1; j < nums.length; j++) {
for (int m = j + 1; m < nums.length; m++) {
list.add(nums[i] + nums[j] + nums[m]);
}
}
}
return (int) list.stream().filter(num -> {
boolean flag = true;
int sq = (int) Math.sqrt(num);
for (int i = 2; i <= sq; i++) {
if (num % i == 0) {
flag = false;
}
}
return flag;
}).count();
}
}
처음 for문에서 경우의수를 구해주고 list에 넣어준다.. ( 3중 for 문이라니.. 공부를 더해야겠다 )
그리고 바로 스트림을 써서 값을 구해줬다
return list.stream().filter(num ->)
값을 하나하나 꺼내 num에 넣어주고
제곱근으로 소수를 판별해주었다
filter 에서 return이 true 가 된다면 그 값은 list 안에 보존된다.
return false 가 된다면 그 값은 list에서 제거된다.
판별 후. count();
소수만 남은 list의 count를 return 시켜줬다.!
후기
1. 람다를 쓰면 역시 속도가 안 나온다.
2. 3중 for 문보다 더 좋은 방법이 있을 거 같은데 나중에 다시 풀어봐야겠다.
'알고리즘 > programmers' 카테고리의 다른 글
프로그래머스 레벨 1 숫자 문자열과 영단어 (JAVA) (0) | 2021.07.10 |
---|---|
프로그래머스 레벨 1 키패드 누르기 알고리즘 (JAVA) (0) | 2021.07.10 |
프로그래머스 레벨1 크레인 인형뽑기 (JAVA) (0) | 2021.07.07 |
프로그래머스 레벨1 폰켓몬 (JAVA) (0) | 2021.07.06 |
프로그래머스 레벨1 다트게임 (JAVA) (0) | 2021.07.04 |