Java & Spring/코딩테스트

4일차 - 알고리즘 코드카타

DJ.Kang 2024. 7. 18. 14:56

- 진행

일자 완료 번호
24.07.16 1~20
24.07.17 21~35
24.07.18 36~42

- 회고

  1. 최대공약수, 최소공배수 구하기
    * 유클리드 호제법

    - 구현
    - 에러발생
       0으로 나누기 시도
    - 이유 : 처음 구현 시 최대공약수 값에 s를 대입했는데
                 while문의 조건에 s가 0이 아닐 때 까지이다, 그러므로 최종 s는 0이되게된다.
                그렇기 때문에 최대공약수는 0이되기전 s 즉 tmp에 저장해둔값이 된다.
  2. 배열에서 세수의 합이 0이되는 경우 찾기
    • 개선전
      삼중 for문으로 시간복잡도가 O(n^3)이된다.
      for문 중첩은 비효율적이므로 다른방법을 찾아봤다.
      class Solution {
          public int solution(int[] number) {
              int answer = 0;
              for(int i = 0; i < number.length - 2; i++){
                  for(int j = i + 1; j < number.length - 1; j++){
                      for(int q = j + 1; q < number.length; q++){
                          if(number[i] + number[j] + number[q] == 0){
                              answer++;
                          }
                      }
                  }
              }
              return answer;
          }
      }


    • 개선후
    •