-
[프로그래머스 - level1] 소수 만들기 - JAVA프로그래머스 문제풀이/Java 문제풀이 2023. 3. 7. 15:19728x90
문제 설명
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.
제한사항- nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.
- nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.
입출력 예numsresult[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을 만들 수 있습니다.처음 작성한 코드
import java.util.ArrayList; class Solution { public int solution(int[] nums) { int answer = 0; ArrayList<Integer> list = new ArrayList<Integer>(); // 소수 구하기 int count = 0; for(int i=2; i<=1000; i++){ for(int j=2; j<=i; j++){ if(i%j ==0){ count ++; } } if(count==1){ list.add(i); } count=0; } //3개 더해서 소수비교 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++) { for(int pp=0; pp<list.size(); pp++) { if(nums[i]+nums[j]+nums[k]==list.get(pp)) { answer++; } } } } } return answer; } }
시간 초과로 통과를 못했다..
다른 사람거를 참고하니 더욱 간단..!
class Solution { public int solution(int[] nums) { int answer = 0; int flag=0; for(int i=0;i<nums.length;i++){ for(int j=i+1;j<nums.length;j++){ for(int z=j+1;z<nums.length;z++){ flag=0; int sum=nums[i]+nums[j]+nums[z]; for(int k=1;k<sum+1;k++){ if( sum%k == 0 ) flag+=1; } if(flag==2) answer+=1; } } } return answer; } }
728x90'프로그래머스 문제풀이 > Java 문제풀이' 카테고리의 다른 글
[프로그래머스 - level1] 과일 장수 - JAVA (1) 2023.03.15 [프로그래머스 - level1] 실패율 - JAVA 2019 KAKAO BLIND RECRUITMENT (0) 2023.03.08 [프로그래머스 - level1] 모의고사 - JAVA (0) 2023.02.23 [프로그래머스 - level1] 소수 찾기 - JAVA (0) 2023.02.23 [프로그래머스 - level1] 가장 가까운 같은 글자 - JAVA (0) 2023.02.16