Algo
-
[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의 ..
-
[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-2566]백준 알고리즘 2566 [Kotlin][Java]Algo 2019. 4. 28. 20:36
Kotlin에 조금 더 익숙해지고자 BOJ를 코틀린으로 풀고 있다. 문제 링크 : https://www.acmicpc.net/problem/2566 2566번: 최댓값 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다. www.acmicpc.net 문제 [Java] import java.util.Scanner; public class Baek_2566_java { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int max = 0; int[][] array = new int[9][9]; ..
-
[LeetCode] Two sumAlgo 2019. 3. 10. 17:47
Question난이도 : 쉬움 문제 : 주어진 정수 배열을 이용하여 특정 target을 더해서 만들 수 있는 2개의 인덱스를 반환해라. 정확히 한개의 해결방법이 있고 동일한 element를 사용할수 없다. My solution Another solution Description시간 복잡도 O(N^2) 모든 경우를 탐색하는 Brute Force 는 방법을 사용하였다.Logic 하나의 솔루션이라는 뜻은 2개의 operator가 짝을 이루었다는 뜻이니까 arr 라는 변수로 return할 output을 정의하고 arr의 크기가 2보다 작은 경우로 조건을 명시하고 target을 만들수있는 경우가 inputArray[idx]보다 작은 경우, 큰 경우, 같은 경우 3가지로 분기처리를 하였다. 작성하고 나니 동일 한 ..
-
[BOJ 2455] 백준 알고리즘 2455Algo 2019. 3. 3. 18:42
백준 알고리즘 2455번을 코틀린으로 풀었습니다. 링크 : 백준 2455 #Comment저는 문제를 잘못 해석해서 정거장이 4개가 아니라 첫번째 0이 시작역, 두번째 0이 종착역으로 check 라는 변수로 0이 2번 나올 시, 시작역부터 종착역까지 다 완주 하였음으로 while 문을 탈출하게 구현하였습니다. #Umm코틀린으로 푼 다른 코드 중 시간복잡도가 적게 걸린 코드를 보면 inline withBufferStream으로 문제를 접근하여 저보다 시간복잡도가 우수합니다. 해당 관련 포스팅을 하여 자바와 다른 코틀린의 장점을 표현하여 코드를 작성하는 습관을 길러야겠습니다.
-
정해진 범위 안에 배수 구하기.Algo 2018. 9. 20. 15:08
코딩도장 이라는 곳에서 추천 첫번째 상단에 있는 문제를 풀었습니다. java로 풀었고 solution1은 제가 생각한 풀이법입니다. 나머지 solution2,3은 추천수가 가장 높던 풀이법들입니다. 밑으로 내려 갈 수록 코드가 간결해지죠? 다른 코드를 보면서 숏코드 작성에 대하여 생각해보게되었습니다. 공배수 관련한 문제는 &&연산자 보다는 || 연산자로 조건을 만드는 것이 보기 편하고, Java가 8버전까지 나오면서 좀더 간결한 연산이 가능하게 됨을 느꼈는데,저런 방식을 람다식이라고 하지 않나요? 저도 사실 능숙하게 이용이 어려워서, 좀 더 공부해야 겠다고 생각하였습니다. 여기에 람다식과 스트림에 관한 내용이 정리가 되어있는데나중에 한 번 찾아봐야겠어요.