알고리즘 풀이/Codility

풀이법을 몰라서 못풀었다. 절대 완전탐색이 아니라는 것은 자명한 사실이었고, 단순히 인덱스 2개만으로 그 사이에 A,C,G가 포함되어있는지 대체 어떻게 알 수 있을까 고민하고 정답을 보니 알파벳의 누적개수를 이용해서 인덱스 사이의 누적개수 변화를 활용해 문제를 해결하는 방식이었다. A,C,G순서대로 해당 알파벳에서 변화를 할 경우 뒤에 것을 확인할 필요가 없다는 것 A,C,G 3개의 알파벳 모두 변화를 안하면 마지막 남은 T가 변화한다는 것 테크닉만 알면 쉬운 문제였는데 IF ELSE문 자주 안쓰고 IF IF만 쓰다보니까 엉뚱한 곳에서 실수함 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 pub..
123456789101112131415161718 public int solution(int[] A) { // write your code in Java SE 8 int accum = 0; int sum = 0; for (int i = A.length - 1; i >= 0; i--) { if (A[i] == 1) accum++; else sum += accum; if(sum>1000000000) return -1; } return sum; }Colored by Color Scriptercs
123456789101112131415161718192021 public int solution(int[] A) { // write your code in Java SE 8 HashSet hs = new HashSet(); for (int a : A) hs.add(a); int v = 0; for (int i = 0; i
123456789101112 public int solution(int[] A) { Arrays.sort(A); int comparativeValue = 1; for (int i = 0; i
MAX counter로 모든 원소를 MAX로 채우는 작업을 실시간으로 해주면 시간초과나서 틀림, MAX counter할 MAX값을 for문 끝날때까지 계속 갱신시켜주면서 for문 탈출 후 가장 마지막에 쭉 갱신시켜주면됨 12345678910111213141516171819202122232425262728 public int[] solution(int N, int[] A) { // write your code in Java SE 8 int[] res = new int[N]; int nowMax = 0; int preMax = 0; for (int i = 0; i N) { preMax = nowMax; } else { if (res[A[i] - 1] > preMax) res[A[i] - 1]++; else ..
건너지 못하는 경우일 때 return -1 123456789101112131415161718192021222324252627 public int solution(int X, int[] A) { // write your code in Java SE 8 boolean[] canJump = new boolean[X + 1]; int pre = 0; int index = 0; for (; index
123456789101112131415161718 public int solution(int[] A) { // write your code in Java SE 8 int min = Integer.MAX_VALUE; int sumOfSecondPart = 0; for (int a : A) { sumOfSecondPart += a; } int sumOfFirstPart = 0; for (int i = 0; i
시간복잡도 때문에 2번 틀림, 정렬이나 그런 것 하지말고 O(n)으로 한번에 끝내야함 12345678910111213 public int solution(int[] A) { // write your code in Java SE 8 int leng = A.length+1; int sum=0; if(leng%2==0) sum=(leng+1)*(leng/2); if(leng%2==1) sum=((leng+1)/2)*(leng); for(int a : A){ sum-=a; } return sum; }Colored by Color Scriptercs
1234 public int solution(int X, int Y, int D) { // write your code in Java SE 8 return (Y-X)%D==0? (Y-X)/D : (Y-X)/D+1; }Colored by Color Scriptercs
비어있는 배열 들어오는 경우의 수를 생각해줘야한다 12345678910111213141516 public int[] solution(int[] A, int K) { // write your code in Java SE 8 if (A.length == 0) return new int[] {}; int[] ans = new int[A.length]; K = K % A.length; for (int i = 0; i
배게
'알고리즘 풀이/Codility' 카테고리의 글 목록 (2 Page)