목록분류 전체보기 (163)
Simple&Natural
피보나치 수열이나 팩토리얼을 구현하다보면 가장 많이 쓰이는 것이 재귀함수이다. 그러나 재귀함수의 경우 필연적으로 메모리 스택을 많이 잡아먹기 때문에 재귀함수를 잘못 쓰다보면 스택오버플로우와 인사하게 된다. 이문제를 해결하기 위해서는 Tail Recursion이라는 꼬리재귀 함수를 사용하면 된다. 재귀함수 경우 마지막 함수가 모두 실행되기 전까지 이전의 함수들이 계속 메모리 스택을 차지하고 있게 되는데 원래 함수로 다시 돌아올 필요가 없는 경우 꼬리재귀 함수를 쓰면 값만 반환한 후 스택에서 사라진다.
풀이과정) 그냥 두 배열을 정렬한 다음 차례대로 비교하면서 일치하지 않는 부분을 골라내면 된다. 사용언어 : Javascript 풀이) 1 2 3 4 5 6 7 8 9 10 11 12 13 function solution(participant, completion) { var answer = ''; participant.sort(); completion.sort(); for(var prop in participant) if(participant[prop]!=completion[prop]) { answer = participant[prop]; break; } return answer; } Colored by Color Scripter cs 출처 : https://programmers.co.kr/learn/..
풀이과정) 일반적인 재귀를 이용하면 스택오버가 발생하므로 꼬리재귀 함수를 이용해야 한다. 사용언어 : Kotlin 풀이) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 class Solution { tailrec fun fibNum(n: Int, a: Int, b: Int): Int { if (n==1) return b else if (n==0) return a return if((a+b)/1234567>=1) fibNum(n-1, b, (a+b)%1234567) else fibNum(n-1, b, a+b) } fun solution(n: Int): Int { return fibNum(n, 0, 1) } } Colored by Color Scripter cs 출처 : https://progr..
본 포스팅은 2019. 1. 9. 15:04 네이버 블로그에 작성했던 글을 이전한 것임 안드로이드 스튜디오 에뮬레이터로 service를 테스트하던 중 start_sticky 관련한 문제가 있었다. MainActivity에서 startService를 실행한 후에 onStartCommand의 return값에 start_sticky를 설정한 상태라면 앱을 종료하고 난 뒤 onCreate -> onStartCommand가 불려야 정상이다. 그러나 로그를 찍어보니 onCreate->onDestroy가 불리는 문제가 있었다. 실제 기기에서는 모두 정상적으로 작동하는 것으로 보아 코드상의 문제는 아닌 듯 싶었다. (에뮬레이터 두 대로 재차 확인) 구글링과 스택오버플로우를 아무리 동원해도 관련 정보가 나오지 않..