알고리즘
-
[Review]다이내믹 프로그래밍 완전 정복(한빛 미디어)Review 2019. 11. 11. 00:20
알고리즘을 풀 때 늘 고민을 많이 하게 되는 문제는 DP, 즉 다이내믹 프로그래밍에 관련된 문제이다. 상향식(bottom-up)과 하양식(top-down) 중에 어떤 식으로 문제를 풀어야 하는지에 대하여 고민을 갖고 있을 때 좋은 기회로 한빛 미디어의 '리뷰어'라는 기회로 해당 책을 읽어보게 되었다. # 목차 [PART 1 재귀 호출의 모든 것] CHAPTER 01 재귀 호출의 이해 CHAPTER 02 재귀 호출의 특징과 메모 전략 [PART 2 드디어 다이내믹 프로그래밍] CHAPTER 03 다이내믹 프로그래밍의 이해 CHAPTER 04 다이내믹 프로그래밍 적용 전략 [PART 3 지금부터 게임을 시작하지] CHAPTER 05 실전 문제 [PART 4 부록은 덤이다] APPENDIX A 알고리즘의 효율..
-
[LeetCode]Reverse IntegerAlgo 2019. 6. 22. 15:26
문제 문자 스트링을 정수로 변환하는 atoi(), itoa()와 관련된 문제이다. Solution 나의 코드는 아래와 같다. Result atoi()란 문자 스트링을 정수 값으로 변환하는 것을 의미한다. c에서는 stl로 stdlib.h 파일에 선언되어있다고 한다. 그래서 해당 문제의 discussion을 가보면 뭐 여타 다른 이유로 있겠지만 압도적으로 c로 푼 코드가 퍼포먼스가 좋다. Kotlin으로 해당 문제를 풀어본 필자는 String.reversed()가 가장 먼저 떠올랐다. 그렇지만 NumberFormatException이 발생해서 애좀 썼다... 여차저차 해서 풀었는데 발생했던 오류 중 하나는 ( - )이다. x를 바로 String.reverse()했더니 -까지 뒤에 붙어 버려서 초반에 x의 ..
-
[Review]알고리즘 트레이닝 : 프로그래밍 대회 입문 가이드Review 2019. 6. 19. 23:47
소프트웨어 엔지니어들에게 알고리즘은 화두가 높은 주제이다. 취미로 알고리즘 문제를 푸는 개발자도 있을 수 있고, 취직을 위하여, 이직을 위해서 여러 이유로 알고리즘은 개발자와 뗄 수 없다. 그중에서도 본 책은 '프로그래밍 대회'를 위한 알고리즘 트레이닝 방법을 소개해준다. 알고리즘에 관한 다른 책들과 비교하여 알고리즘 트레이닝 책은 얇아 읽는 부담감이 덜하다. 프로그래밍 대회에서 배우는 - 알고리즘 문제 해결 전략(구종만) 1/2권 분권'이 있었는데, 본 책은 상대적으로 다른 알고리즘을 위한 책 보다 얇아서 약한 개념만 부분적으로 읽고 보완하기에도 좋다고 느꼈다. 목차 ...더보기 1장 들어가며 2장 프로그래밍 기법 3장 효율성 4장 정렬과 탐색 5장 자료 구조 6장 동적 계획법 7장 그래프 알고리즘 8..
-
[LeetCode] Climbing StairsAlgo 2019. 5. 6. 23:00
문제 알고리즘 유형중 DP(Dynamic Programming)에 관한 문제이다. DP 관련한 문제를 접근하기 위해서는 메모제이션에 대한 이해가 필요하다. TOP-DOWN 위에서 아래로 접근하는 방식 재귀를 많이 이용한다. Bottom-Up 밑에서 위로 접근하는 방식 for문같은 반복문을 많이 이용. 메모제이션에 관한 이해나 부연 설명들은 아래와 같은 블로그를 참고하면 더욱더 이해하기 쉬울 것이다. * 김로그 * all about coding 피보나치수열처럼 점화식을 이용하면 구할 수 있는 문제였다. class Solution { fun climbStairs(n: Int): Int { val array = IntArray(n+1).let { for (i in 1..n) { when (i) { 1 -> i..
-
[BOJ 2455] 백준 알고리즘 2455Algo 2019. 3. 3. 18:42
백준 알고리즘 2455번을 코틀린으로 풀었습니다. 링크 : 백준 2455 #Comment저는 문제를 잘못 해석해서 정거장이 4개가 아니라 첫번째 0이 시작역, 두번째 0이 종착역으로 check 라는 변수로 0이 2번 나올 시, 시작역부터 종착역까지 다 완주 하였음으로 while 문을 탈출하게 구현하였습니다. #Umm코틀린으로 푼 다른 코드 중 시간복잡도가 적게 걸린 코드를 보면 inline withBufferStream으로 문제를 접근하여 저보다 시간복잡도가 우수합니다. 해당 관련 포스팅을 하여 자바와 다른 코틀린의 장점을 표현하여 코드를 작성하는 습관을 길러야겠습니다.