본문 바로가기
반응형

2023년 이전/Codility27

Lesson7 StoneWall 자세한 문제는 여기서 확인 이 문제는 문제를 이해하는데 많은 시간을 소모했고 구글링을 통해서 문제를 이해하려해도 문제가 이해가 되지 않았습니다. 아무튼 이 문제의 핵심은 현재 높이 보다 이전 블럭이 낮아질때까지 계속 제거 해 나감. 현재 높이랑 이전 블럭이 같으면 같은 블럭으로 통합 가능 하기 때문에 그냥 유지함. 위 2개 입니다. 문제에서 주어진 예제로 설명하자면 H[0] = 8, H[1] = 8, H[2] = 5, H[3] = 7, H[4] = 9, H[5] = 8, H[6] = 7, H[7] = 4, H[8] = 8 일 경우 8 count 1 {8, 8} 이때는 높이가 같기 때문에 count는 그래도 입니다. {8, 8}, 5 인데 5가 8보다 작기 때문에 8을 뺸다. 그리고 새로운 5가 들어갔기 .. 2020. 6. 7.
Lesson 10 - MinPerimeterRectangle 자세한 문제는 여기서 확인하시면 됩니다. N의 약수 A와 A*B=N해서 그 수를 만드는 B를 사용하여 2*(A+B)시 제일 작은 수를 구하는 문제 ex) N=30 이면 (1,30) = 62, (2,15) = 34, (3,10) = 26, (5,6) = 22 이렇게 나타나므로 22가 제일 작은 값이된다. code class Solution { public int solution(int N) { // write your code in Java SE 8 int k = (int)Math.sqrt(N); int result = Integer.MAX_VALUE; for(int i = 1; i c){ result = c; } } } return result; } } 간단한 문제다 제곱근까지만 확인하여 제일 작은 값을.. 2020. 1. 27.
Lesson 6 - NumberOfDicIntersection 자세한 문제는 여기서 확인하시면 됩니다. 이 문제는 array의 index가 위치고 그 값이 반지름이되어 원들이 겹치는 횟수를 반환하는 문제입니다. 예제의 겹치는 횟수는 0, 1 / 0, 2 / 0, 4 1, 2 / 1, 3 / 1, 4 / 1, 5 2, 3 / 2, 4 3, 4 4, 5 이렇게 겹쳐지기 때문에 11입니다. 첫번째 알고리즘을 사용한 방법은 O(N**2) 복잡도를 나타냈습니다. 그리고 결과는 75% fun solution(A: IntArray): Int { var count = 0 for(i in A.indices){ for( j in i+1 until A.size){ if(j-A[j]=i+A[i]){ count++ }else if(i-A[i]=j-A[j] ){ count++ } } if(.. 2020. 1. 20.
Lesson7 - fish 자세한 문제는 여기서 확인하시면 됩니다. 간단하게 A array는 물고기 크기 B array는 물고기의 방향인데 다른 방향의 물고기들이 만나면 더 큰 물고기가 작은물고기를 잡아 먹습니다. 그리고 B array에서 0은 위로 1은 아래로 내려가는 물고기를 말합니다. 위의 조건에 맞도록 array들을 분석해서 마지막으로 남은 물고기의 갯수를 반환하는 문제 입니다. 해결 code fun solution(A: IntArray, B: IntArray): Int { val downFish = arrayListOf() var count = 0 for(i in A.indices) { if(B[i] == 1){ downFish.add(A[i]) }else{ while(downFish.size > 0){ if(downFi.. 2020. 1. 20.
반응형