230717 TIL #139 3개 더해 소수 성립 문제

김춘복·2023년 7월 17일
0

TIL : Today I Learned

목록 보기
139/571

230717 Today I Learned

노트북 쿨링팬이 아예 돌지 않아 화요일까지 수리를 기다려야 한다. 집에 와서 공부를 하기 환경이지만, 어떻게든 공부를 해봤다.


3개 더해 소수 성립 문제

int 배열 nums가 주어질 때, nums의 서로 다른 3개의 수를 더해 소수가 되는 경우의 수를 모두 구하라

  • 3개의 수를 뽑기위해 여러 방법을 써봤으나 아직 수행이 부족해 for문을 3개쓰는 방법 말고는 떠올리지 못했다. 시간복잡도가 아마 O(n^3)을 넘어갈 것이다. 추후 시간복잡도를 더 줄이기위해 더 공부해보려 한다.

  • 소수를 판단하기 위해 isPrime()이라는 private 메서드를 새로 만들었다.

  public 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];
          if (isPrime(sum)) answer++;
        }
      }
    }
    return answer;
  }

  private boolean isPrime(int sum){
    for (int i = 2; i<= Math.sqrt(sum); i++){
      if (sum % i == 0){
        return false;
      }
    }
    return true;
  }
profile
Backend Dev / Data Engineer

0개의 댓글