살려주세요

dhahn99 Reply 4 years 22 weeks ago
왜 runtime error가 나는지 모르겠습니다... 잘 짠 것 같은데 어느 케이스에서 무슨 에러가 나는지라도 알려주시면 감사하겠습니다ㅜㅜ
dhahn99 Reply 4 years 22 weeks ago
아.. 이거 status에서 어떤 에러가 떴는지 확인할 수 있었네요..ㅜ 제가 짠 코드가 예시 몇개에서는 작동하는데 withCS에 넣으니 런타임 에러가 나길래, 똑같이 바이너리 서치로 찾는 방식의 코드를 찾아서 넣어봤더니 통과가 되어 버렸습니다.. 그래서 그걸 제 코드랑 비교하느라 트라이 횟수가 엄청 많은데, 마지막 트라이는 제 방식(바이너리 서치, 최솟값 0찾으면 더 작은 값은 없으므로 바로 중단)을 인덱스 1기준 코드 위에 구현했습니다. 지금 살펴보니 똑같은 방식인데 인덱스1기준 방식만 작동했던 이유는, array2의 첫 번째 원소가 이미 target(key)보다 클 때 array2[right - 1]가 상정한 배열 범위를 벗어나는데, 인덱스1 기준일 때는 인덱스0을 접근할 수 있지만 인덱스0 기준일 때는 인덱스 -1을 접근하려고 해서 에러가 났던 것 같네요.. 인덱스 0 1이 표기 방식 말고는 차이가 없다고 생각했는데, 1기준에 편리한 점이 있다는 것 하나 배워 갑니다.
withcs2 Reply 4 years 22 weeks ago
만약 두 배열 array1, array2가 이렇게 있고, array1: a0 a1 a2 a3 a4 a5 array2: b0 b1 b2 b3 b4 b5 b2>x-a0 인 것을 확인했다면, b2>x-a1, b3>x-a1, b4>x-a1 은 당연한 거니까 확인할 필요가 없습니다. 지금 코드는 for문 돌 때마다 이전에 확인했던 작업을 굳이 다시 하고 있어요. accept되긴 했지만 right 범위를 더 줄여서 보다 효율적으로 풀 수 있을 것 같습니다.