NEW POSTS
-
[codility] CountDiv개발관련 2023.08.23 18:02
(문제) A, B, K가 주어질 때 A~B 사이의 숫자들 중 K로 나누어 떨어지는 숫자 총 개수 구하는 함수 작성 (my solution) - A 값이 K로 나누어 떨어지는 지 아닌 지 확인 후 결과를 리턴하면 된다. - 가장 심플한 방법은 A 부터 B까지 순회하면서 K로 나누어 떨어지는 지 카운트하는 방법도 있지만 굳이 그렇게 하지 않아도 구할 수 있다. class Solution { public int solution(int A, int B, int K) { int offSet = (A % K) == 0 ? 1 : 0; return (B / K) - (A / K) + offSet; } } (chatGPT) - 나와 동일한 방법으로 풀었다. class Solution { public int soluti..
-
[codility] PassingCars개발관련 2023.08.22 11:10
(문제) 주어진 배열 A에서 서로 만나는 차 쌍의 개수를 세는 함수 (my solution) - 문제를 이해하는데 오랜 시간이 걸렸다.. (west, east도 헷갈리고 난리) - 배열 역순으로 순회하면서 east(0) 값을 찾고 west(1)를 잘 count만 하면 된다. (굳이 역순으로 할 필욘 없었구나;;) - 가장 간단한 케이스부터 꼼꼼하게 테스트를 하니 버그를 줄이는 데 도움이 많이 된다. - for문이 헷갈리면 표를 그려놓고 i 값이 변할 때마다 다른 변수의 값이 변하는 걸 따라하다 보면 실수를 줄일 수 있다. - 시간복잡도는 O(N) package codility.tasks; public class PassingCars { public static int solution(int[] A) { ..
-
[codility] MissingInteger개발관련 2023.08.21 13:21
(문제) A 배열이 주어질 때, 빠진 자연수 찾기 (my solution) - 처음에는 Bubble Sorting을 통한 정렬 후 missingInteger를 찾는 방향으로 짰다. - 왜냐하면 int A = {3, 4, 5} 일 때 6이 반환된다고 생각했기 때문 (하지만 이런 형태로 A가 주어지는 경우는 없다.) - 그냥 단순하게 배열을 순회하면서 HashSet에 값을 넣고, 1부터 증가시켜 가면서 빠진 값을 리턴해주면 끝난다. - 결론: 불필요한 케이스를 생각했고 단순한 문제를 복잡하게 풀었다. - 시간 복잡도는 O(N^2) --> O(N)으로 감소했다. - 이참에 정렬 복습이나 해야겠다. package codility.tasks; import java.util.HashSet; public class ..
-
[codility] MaxCounters개발관련 2023.08.08 14:46
(문제) 정수 N, 배열 A가 주어졌을 때 아래 연산이 끝난 후 N의 크기를 가지는 카운터 배열 반환하는 함수 작성 - A[K] = X (1 성능 문제. - 33% => 로직 오류. maxCount 값 초기화를 안해줌. - 최종: 88% (large_random2 성능테스트 통과하지 못함) - 시간 복잡도: O(N^2) => 최악일 경우 package codility.tasks; import java.util.HashMap; import java.util.Map; public class MaxCounter { public static int[] solution(int N, int[] A) { HashMap counterHash = new HashMap(A.length); int[] counters = n..