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 |
- 회고
- 최대공약수, 최소공배수 구하기
* 유클리드 호제법
- 구현 - 에러발생
0으로 나누기 시도 - 이유 : 처음 구현 시 최대공약수 값에 s를 대입했는데
while문의 조건에 s가 0이 아닐 때 까지이다, 그러므로 최종 s는 0이되게된다.
그렇기 때문에 최대공약수는 0이되기전 s 즉 tmp에 저장해둔값이 된다. - 배열에서 세수의 합이 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; } }
- 개선후
- 개선전