본문 바로가기
반응형

codility9

[codility] PermMissingElem Q. 1부터 순차적으로 올라가는 순서 무작위 배열 값 중에서 연속되지 않고 빠진 숫자를 찾으세요. A = {2, 3, 1, 5} A. 4 값이 1씩 올라가므로 전체 합을 구하는 공식으로 원래 나와야 할 총계를 구한 다음에 실제 값을 구해서 차이를 구하면 어떤 값이 빠졌는지 알 수 있다. public int solution(int[] A) { long actVal = A.length * (A.length + 1) / 2; long sumVal = 0; for(int i : A){ sumVal = sumVal + i; } return (int)((A.length + 1) - (sumVal - actVal)); } eclipse에서 실행하면 100,000 자리까지 가도 정상적으로 잡아 내는데, codility.. 2018. 1. 12.
[codility] FrogJmp Q. 1회 점프로 D만큼 이동 할 수 있는 개구리가 X지점에서 Y지점으로 이동하기 위해 점프하는 최소 점프 수를 구하시오. X = 10, Y = 85, D = 30 A. 3 [멍청이 버전] 일단 돌리고 보는 거다... public int solution(int X, int Y, int D){ int jumpCnt = 0; while(X < Y){ X = X + D; jumpCnt++; } return jumpCnt; } [괜찮은 버전] 계산식을 만들어서 루프 없이 해결 public int solution(int X, int Y, int D){ int jumpCnt = 0; jumpCnt = ((Y - X)/D); if((Y-X)%D > 0){ jumpCnt++; } return jumpCnt; } 2018. 1. 12.
[codility] CyclicRotation Q. 배열값을 지정한 횟수만큼 롤링으로 우측 한칸씩 이동하세요. A = {3, 8, 9, 7, 6} K = 3 A. {9, 7, 6, 3, 8} 첨에.. int[] B = A; 로 했더니 생각했던 값이 안 나와서 뭐지 라고 고민 했는데... 역시 멍청이는 힘들다. 위와 같이하면 주소값이 복사가 되는 거라서 같은 값을 가지게 된다. 어레이카피를 하거나 클론을 해야 독립적으로 각각 값을 가지게 된다. public int[] solution(int[] A, int K){ int[] B = A.clone(); } for(int i = 0 ; i < K ; i++){ for(int l = 0 ; l < B.length - 1 ; l++){ B[l + 1] = A[l]; } B[0] = A[A.length - 1].. 2018. 1. 12.
[codility] OddOccurrencsInArray Q. 배열 값 중에서 짝이 없는 홀수 값을 찾으세요. A = {9, 3, 9, 3, 9, 7, 9} A. 7 [멍청이 버전] 보기에도 복잡하고 해석하기도 어렵고 무식하게 만들었다. 그래도 꼴에 나머지를 이용하는 기지를 발휘했다. 2로 나눠서 0이 아니면 짝수니까.... (원래 더 똥멍청이 버전이 있는데 그건 너무 부끄러워서 못 올리겠다.) public int solution(int[] A){ int rtnVal = 0; Map chkMap = new HashMap(); for(int i = 0 ; i < A.length ; i++){ if(chkMap.get(A[i]) == null){ chkMap.put(A[i], 1); }else{ chkMap.put(A[i], chkMap.get(A[i]) + 1).. 2018. 1. 12.
반응형