본문 바로가기

IT/알고리즘

[코딜리티] - Lesson 11 ChocolatesByNumbers 안녕하세요 남갯입니다. boolean[] isEmpty = new boolean[N]; int index = 0; int count = 0; while (!isEmpty[index]) { isEmpty[index] = true; count++; if (index + M > N - 1) { index = (index + M) % N; }else{ index += M; } } return count;위에는 OOM public int solution(int N, int M) { // write your code in Java SE 8 BitSet bitSet = new BitSet(); int index = 0; int count = 0; while (!bitSet.get(index)) { bitSet.set..
[코딜리티] - Lesson 11 CountSemiprimes 안녕하세요 남갯입니다. public int[] solution(int N, int[] P, int[] Q) { int[] result = new int[P.length]; // 0으로 초기화 int[] primeArray = new int[N + 1]; //0 = 소수 //2이상 = 노소수 System.out.println(primeArray[3]); primeArray[0] = 1; primeArray[1] = 1; int i = 2; //소수 구하기 while (i * i
[코딜리티] - Lesson 10 Peak 안녕하세요 남갯입니다. public static int solution(int[] A) { List divList = getDivideSize(A.length); List peakList = new ArrayList(); for (int i = 0; i = 1 && i A[i - 1] && A[i] > A[i + 1]) { peakList.add(i); } } if(peakList.size() = peakList.get(j) && div * (j + 1) < peakList.get(j + 1)) { result ++; } else { break; } if(div * result == A.length){ return..
[코딜리티] - Lesson 10 MinPerimeterRectangle 안녕하세요 남갯입니다. 중간이 가장 작은수 일 수 밖에 없다 public int solution(int N) { // write your code in Java SE 8 //즉 제곱근까지의 반까지 나눠지는 갯수 x 2 = 총 개수 double sqrt = Math.sqrt(N); int first = 1; for (int i = 1; i
[코딜리티] - Lesson 9.MaxDoubleSliceSum 안녕하세요 남갯입니다. 명준이의 풀이: https://app.codility.com/demo/results/training5QZBVV-ZDU/
[코딜리티] - Lesson 10.CountFactors 안녕하세요 남갯입니다. public int solution(int N) { // write your code in Java SE 8 int result = 1; Map hashMap = new HashMap(); int count = 0; int beforeDiv = 2; int div = 2; while (N > 1) { if (N % div == 0) { N /= div; hashMap.put(div, hashMap.getOrDefault(div, 0) + 1); //다시 초기화 할필요가 없다 // div = 2; } else { div++; } } Iterator iterator = hashMap.keySet().iterator(); while (iterator.hasNext()){ result *..
[코딜리티] - Lesson 9.MaxSliceSum 안녕하세요 남갯입니다. public static int solution(int[] A) { // write your code in Java SE 8 int maxEnding = 0; int maxSlice = Integer.MIN_VALUE; int maxValue = Integer.MIN_VALUE; for (int a : A) { // a> 0이면서 maxEnding or maxSlice 0보다 작다는건 음수값에서 양수값인 값이 나왔을때 if ((maxEnding 0) { maxValue = maxSlice; maxSlice = 0; maxEnding = 0; } maxEnding = Math.max(Integer.MIN_VALUE, maxEnding..
[코딜리티] - Lesson 9.MaxProfit 안녕하세요 남갯입니다. n^2 의 풀이 public int solution(int[] A) { // write your code in Java SE 8 int result = 0; int sum = 0; for (int i = 0; i < A.length; i++) { for (int j = i + 1; j < A.length; j++) { sum = A[j] - A[i]; result = Math.max(result, sum); } } return result; } 퍼포먼스 타임 아웃남 https://app.codility.com/demo/results/trainingHXQ6T5-UKU/ n으로 풀어야함 public static int solution(int[] A) { // write your cod..