코딩테스트 96

[2023-01-03]

Start PassingCars 문제 아래는 어제 상태이다.. 이중 for문이 돌아가고 있어서 시간복잡도는 O(n^2)인 아주 여므벼으인 상태이다. 얼른 마저 풀어보겠습니당.. 성능 테스트 20%가 나왔는데 result가 1,000,000,000 일 경우 -1 처리 해주는 부분 때문인 것 같다. 지금 이 레슨을 극복하지 못하는 이유는 커다란 입력 범위와 타이트한 시간 제한에 비해 시간복잡도가 너무 크다는 점이다. 커다란 입력 범위를 줄일 수 있다고 판단되는 로직을 짜보고 있는 중이다. 위와 같이 짠 이유는 0과 1이 반반일 경우 이중 for문으로 돌게 되는 값이 원래 코드에서는 n * n = n ** 2였지만 (n/2) * (n/2) = n**2 / 4 가 될 것이라고 생각했다. 물론 위처럼 0과 1이 ..

코딩테스트 2023.01.03

[2023-01-01]

FrogJmp 문제 입력 범위가 1부터 10억까지이기 때문에 X와 Y가 각각 1과 10억이고 D가 1로 입력값이 들어오고 반복문을 돌려서 체크하게 되면 10억번 반복문이 돌아간다. 따라서 문제 그대로 구현하기보다는 최대한 반복문을 안 쓸 수 있는 방법을 택하는 것이 좋겠다. PermMissingElem 문제 배열 원소 구성은 1부터 N+1로 되어있고 배열의 크기가 4라면 1 ~ 5로 구성되어 있다는 의미이다. 1부터 N + 1이 배열에 있는지 찾으려면 이중 for문으로 이루어져야 할 것이라고 생각했다. 시작값이 1이고 끝나는 값이 N+1인 for문이 하나 돌고 array에 1 ~ N+1이 있는지 확인하기 위한 for문이 돌아서 총 2개 최악의 경우 N이 100,000 100,000 * 100,000 일 ..

코딩테스트 2023.01.01

[2022-12-27]

문제가 어렵지는 않았던 것 같은데 왜 어제는 그렇게 풀었나 싶다. 수와 수 사이에 짝을 이루게 되면 홀수 크기의 배열에서 짝수 개의 값과 홀수 개의 값으로 나누어지게 될 것이다. -> 코드 로직 아래는 OddOccurrencesInArray에 대한 O(n) 정답 코드이다. // you can also use imports, for example: import java.util.*; // you can write to stdout for debugging purposes, e.g. // System.out.println("this is a debug message"); class Solution { public int solution(int[] A) { int result = 0; Map map = new..

코딩테스트 2022.12.28