목록분류 전체보기 (163)
Simple&Natural
배열의 전체 크기가 1000 이하로 작기 때문에 시간복잡도를 O(n^2)으로 잡아도 매우 빠르게 통과가 가능했다. import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; class Solution { public int solution(int[] citations) { int answer = 0; List list = Arrays.stream(citations).boxed().collect(Collectors.toList()); // 각 논문을 조회수 순으로 정렬 Collections.sort(list, Collections.reverseOrder()); /..
Java 풀이 한 가지 개선할 점이 있다면, 내 코드에서는 set을 만들어 0 으로만 이루어져 있는지 확인하는 방법을 썼는데 0 으로만 이루어진 수를 체크할 때 단순히 첫 번째 원소가 0 인지만 확인하면 된다. 또한 우선순위 큐를 사용하는 방법도 있는데 로직상으로는 comparator와 유사하다. 내 코드들을 보면 메소드 내 임시 변수 사용량이 많아 불필요한 메모리 사용이 많아 보이는 것 같다. 일단 제한된 시간 안에 테스트를 통과하는 것이 목표인 만큼 효율성이나 깔끔한 코드보다는 직관적으로 떠오르는 풀이를 통해 정확도를 우선적으로 고려하고 있고 나중에 코드리뷰를 하며 개선 예정이다. import java.util.*; class Solution { public String solution(int[] n..
쉽게 말해 의존 라이브러리 내 또 다른 의존 라이브러리들끼리 충돌하는 이슈이다. Gradle 내 라이브러리를 정리하는 과정에서 서로 다른 라이브러리간 하위 종속성이 충돌하는 이슈가 발생하였다. A와 B의 종속성을 맞춰주면 B와 C가 충돌하고 이를 맞추면 C와 D가 충돌하는 딜레마(?)가 지속적으로 발생하였다. 주류 라이브러리가 아닌지라 업데이트 지원이 제대로 이루어지지 않아 호환성을 맞춰주는 데 매우 애를 먹었다. 우선 라이브러리 내 하위 종속성 트리를 모두 trace하여 서로 충돌이 나는 종속성을 확인한 뒤 gradle 내에서 exclude 해주는 방법으로 이슈를 해결하였다. 1차는 Firebase Performance와 Bitcoinj 에서 충돌 ./gradlew app:dependencies ./g..
아무 생각없이 시간복잡도 O(N^2)으로 짰다가 효율성에서 실패. O(N)으로 개선하여 성공했다. 첫 번째 원소를 기준으로 나눈 두 배열의 초기 합을 각각 구한 뒤 구분선을 한 칸씩 옮겨주면서 한 쪽은 초기값에서 숫자를 빼고, 한 쪽은 초기값에 숫자를 더해주면서 그 둘의 절댓값의 차이를 계속 확인해주면 된다. 개선 전 import java.util.*; class Solution { public int solution(int[] A) { int answer = -1; int n = A.length; for (int i=1; i