본문 바로가기
반응형

kotlin72

디자인 패터 - 옵저버 패턴(Observer Pattern) 옵서버 패턴(observer pattern)은 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴입니다. 주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용됩니다. 한객체의 상태가바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의합니다. 옵저버 패턴의 그 구성을 보면 위의 다이어그램과 같습니다. Oserver - 데이터 변경을 통보 받는 인터페이스. 즉 Subject에서 Observer 인터페이스의 update를 호출하여 ConcreateSubject의 데이터 변경을 ConcreteObserve.. 2019. 11. 18.
Codility - Lesson 4 MissingInteger 상세한 문제는 여기서 확인할 수 있습니다. 간단하게 Array A에서 없는 값중 가장 큰 값을 반환하는 문제입니다. Array A의 모든 값이 음수면 1을 순열이면 Array A에 있는 값들중 가장큰 값보다 1큰 값을 반환하는 문제입니다. 해결 code는 un solution(A: IntArray): Int { // write your code in Kotlin var max = 0; for(i in A.indices){ if(max 0){ isPositive = true B.set(A[i]-1, true) } } if(.. 2019. 11. 15.
Codility - Lesson 4 MaxCounters 자세한 문제는 여기서 확인할 수 있습니다. 간략하게 말하면 N 사이즈의 Array B를 만들어서 A array의 항목들을 하나 하나 확인하면서 그 값 a가 a>=1 && a= 1 && A[i] = 1 && A[i] 0){ ans = IntArray(N,{checkMax}) for(i in position+1 .. A.size-1){ ans[A[i]-1]++ } } return ans } A[K]가 N+1이 없을 경우와 이중 for문을 제거한 code 입니다. (해결하는데 약 1시간 반정도 걸렸네요) Array A를 for문을 통하여 위의 문제 조건에 맞게 Array ans의 각각의 요소 값을 1씩 증가 시킵니다. 그러다가 A[i]의 값이 N+1일 경우 그 position을 저장 하고 그때의 최대 값을 c.. 2019. 11. 14.
Codility - Lesson4 FrogRiverOne 자세한 문제는 여기서 확인할 수 있습니다. 문제를 요약하자면 개구리가 X까지 가야하는데 주어진 Array에있는 값들이 1부터 X까지 순서대로 나열되는데 Array의 몇번째 항목까지 필요한가를 return 하는 항목입니다. 주어진 example을 보면 X= 5이고 Array A는 A[0]=1 , A[1]=3 , A[2]=1 , A[3]=4 , A[4]=2 ,A[5]=3 ,A[6]=5 ,A[7]=4 일때 1,2,3,4,5를 만들기 위해서는 ArrayA의 A[6]까지 필요함으로 return 6이 된다는 의미 입니다. (문제 이해하는데 한 20분 쓴거 같네요) 그래서 해결 code는 fun solution(X: Int, A: IntArray): Int { // write your code in Kotlin va.. 2019. 11. 14.
반응형