반응형 codility9 [codility]MissingInteger Q. 배열내에서 존재하지 않는 0보다 큰 가장 작은 양수값을 찾아라. 음수만 있을 경우는 1로 리턴 A = {1, 3, 6, 4, 1, 2} A. 5 소팅 안 하고 루프 한 번만 돌려서 해 볼려고 별에 별 짓을 다 해 봤는데 안 되더라... 결국에는 소팅 -_- 루프 한번으로 정렬하는 방법은 없는 건가라는 의문에 빠졌다. import java.util.Arrays; class Solution { public int solution(int[] A) { // write your code in Java SE 8 int findVal = 1; Arrays.sort(A); for(int i : A){ if(i > 0 & i == findVal){ findVal++; } } return findVal; } } 2018. 1. 19. [codility]FrogRiverOne Q. 강 위에 1초마다 나뭇잎이 무작위로 떨어지는데, 개구리가 그걸 밟고 강 반대쪽으로 넘어가는 것이 가능해 지는 가장 빠른 시간을 구해라. 1 ~ N 까지 모든 지점에 나뭇잎이 떨어져야 건널 수 있다. (영어 실력이 미천하여 잘 못 해석 했을 수도 있다....) A = {1, 3, 1, 4, 2, 3, 5, 4} X = 5 A. 6 import java.util.HashSet; class Solution { public int solution(int X, int[] A) { // write your code in Java SE 8 boolean target = false; boolean done = false; int stepCnt = 0; int timeCnt = 0; HashSet chkSet = .. 2018. 1. 19. [codility]PermCheck Q. 1부터 시작해서 N까지 순서는 무작위 이나, 숫자가 순차적으로 1씩 값이 올라가야 하는 배열이 정상인지 판단해라. 정상이면 1, 빠진값이 있으면 0으로 리턴 {4, 1, 3, 2} = 1 {4, 1, 3} = 0 [성공한 버전] 중복값 여부를 찾기 위해 HashMap을 사용 했다.(HashSet 이 공간을 덜 먹나..? 그건 잘 모르겠다) 계산도 필요없고 중복값, 최소값, 최대값만 찾으면 된다. class Solution { public int solution(int[] A) { // write your code in Java SE 8 int minVal = 1000000000; int maxVal = 0; int rtnVal = 1; Map chkArr = new HashMap(); for(int.. 2018. 1. 18. [codility] TapeEquilibrium Q. 배열의 포지션 N을 1씩 증가하면서 (좌측 합 - 우측 합) 차이가 가장 작은 값을 구하시오. (N은 1부터 시작함) A = {3,1,2,4,3}; 3 - 10 = 7 4 - 9 = 5 6 - 7 = 1 10 - 3 = 7 A. 1 [멍청이 버전] 루프를 한번만 돌려서 값을 찾아야지 라는 생각에 갇혀서 하다보니 기괴한 방식으로 되었다. 결국은 2번은 돌려야 값을 찾을 수 있게 되었는데... 한번으로 가능하긴 한가..? class Solution { public int solution(int[] A) { // write your code in Java SE 8 int minDiff = 0; if(A.length > 0){ int[][] B = new int[A.length - 1][2]; for(in.. 2018. 1. 17. [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 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. [codility] BinaryGap 최근 codility 라는 재미있는 사이트를 알게 됐다. 문제를 풀면서 느낀건..... 난 멍청하고 무식하게 코딩하구나 이다 ㅠ_ㅠ... 인터넷 뒤져보니 똑똑한 사람 많구나 라는 걸 느꼈다. 성능 관련으로 시간복잡도, 공간복잡도라는게 있다는걸 이제서야 알게 됐다. 루프를 최소한으로 하고 메모리도 덜 잡아야 한다. 그리고 2진수나 비트 계산이 꽤나 유용하고 멋지다는 것도 알게 됐다. (하지만 난 수학장애라서 ... 너무 힘들다.) 효율적으로 개발하도록 이제부터는 생각 좀 하고 살자. 공개적으로 코드 올리는 것도 부끄럽지만... 그냥 적어 본다. (codility는 내가 푼 코딩을 다시 볼 수 없다.....) Q. 바이너리 값에서 1과 1사이가 가장 큰 값을 찾아보세요. N = 1041 A. 5 public.. 2018. 1. 12. 이전 1 다음 반응형