본문 바로가기
반응형

2023년 이전/Codility27

Lesson8 - Dominator 자세한 문제는 여기서 확인하시면 됩니다. 이 문제는 array에서 과반수 이상을 차지하는 숫자를 찾아서 그 숫자의 array 위치중 1개를 반환하는 문제입니다. 첫번째 풀이는 fun solution(A: Array): Int { val B = A.copyOf() B.sort() var checkNum = A[0] var count = 1 var value = -1 for (i in 1 until A.size) { if (checkNum == B[i]) { count++ } else { checkNum = B[i] count = 1 } if (count > (B.size / 2)) { value = checkNum } } if (value != -1) { for (i in A.indices) { if (A.. 2020. 1. 6.
Lesson7 - Brackets 자세한 문제는 여기서 확인하시면 됩니다. 간략하게 설명하면 String이 "{[()()]}"이렇게 짝이 맞으면 1, 짝이 맞지 않다면 0을 반환하도록 합니다. 비어 있을 경우에도 1을 반환합니다. 들어갈수 있는 문자는 "{" "[" "(" ")" "]" "}" 입니다. 우선 문제의 힌트는 Lesson7이 stack과 queue에 관련된 문제라는 것에서 둘중 하나를 사용하면 된다는 것을 유추할 수 있습니다. 그렇게 생각한 풀이 알고리즘은 1.String이 비어있으면 1을 반환 2.String의 길이가 짝수가 아닐 경우 0을 반환 (짝수가 아니라면 괄호의 짝이 맞지 않기 때문입니다.) 3.String을 처음부터 확인하면 "{" "[" "("들 하나라면 stack에 쌓고 ")" "]" "}"라면 스텍에서 문자.. 2019. 12. 19.
Lesson6 - Triangle 자세한 문제는 여기서 확인해주시면 됩니다. 문제는 N사이즈의 Int형 array에 있는 값 3개를 뽑아서 (0 ≤ P R Q+R > P P+R > Q 이 가능하면 return 1 아니면 return 0을 하는 문제입니다. 처음에는 단순히 가운데 값 3개를 골라서 가능할 경우 1 아닐 경우 0면 될 줄 알았습니다. 그 code는 다음과 같습니다. fun solution(A: IntArray): Int { // write your code in Kotlin if(A.size == 0 || A.size == 1 || A.size == 2) return 0 val mid = A.size/2 A.sort() val p = A[mid-1] val q =A[mid] val r = A.. 2019. 12. 16.
Lesson 6 - Distinct 자세한 문제는 여기서 보실 수 있습니다. 이 문제는 array에 있는 값이 다른 숫자의 갯수를 반환하는 문제 입니다. A[0] = 2 A[1] = 1 A[2] = 1 A[3] = 2 A[4] = 3 A[5] = 1 이럴때 1,2,3이 있으므로 3이 반환됩니다. 해결 code는 다음과 같습니다 fun solution(A: IntArray): Int { // write your code in Kotlin A.sort() var ans = 1 var check = A[0] for(i in A.indices){ if(check != A[i]){ ans++ check = A[i] } } return ans } 그런데 이렇게 할경우 91%의 결과를 받습니다. (복잡도는 O(N*log(N)) or O(N) 입니다) .. 2019. 12. 14.
반응형