-
[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가지로 분기처리를 하였다.작성하고 나니 동일 한 코드가 3가지의 반복되어서 답을 맞추기에 급급했다는 생각을 하였다.코틀린을 이용하여 작성하니까 var,val로 초기화하여서 initialize 하는데 자꾸 warning 문구가 떠서
여간 신경쓰였는데 나중에 kotlin 으로 초기화 할때 어떤 방법으로 해야하는지 찾아봐야겠다.
- More Kotlin
- intArrayOf(),arrayListOf(),arrayOf()
코틀린에서 array에 값을 만들어 줄 때 대채로 intArrayOf(), ArrayOf() 로 괄호 안에 값을 넣어 명시 해준다.
기존에 배열을 초기화해준다고 intArrayOf(0)이라고 했다가 자꾸 원치 않는 0이라는 값이 arr에 들어가 있어서 애를 먹었다.
그래서 intArrayOf()라고 작성하고 안에 값을 null로 하여 arr? 표시를 하여 null 값이 가능하게 만들었다.
- Range Expression
또한 java와 다르게 iterator하게 반복되는 값이라면 for문 안에 넣을 수 있다.
내 코드의 idx는 example의 input indices 처럼 0..3 이 반복된다. - until
다른 분의 코드를 보면 for 반복문 안에 until 이라는 Range를 사용하셨다.
until은 가장 마지막에 있는 idx값을 제외한다.
예를 들어서
위와 같이 표현하였을시 출력되는 값은 123456789 인 것이다.
그리고 다른 분의 코드는 클라스 있게 i,j로 깔끔하게 intArray에 들어갈 element값을 정의하셨다.
역시 다른 분의 코드를 보고 배울 점이 많은 것 같다
Reference
문제 출처 : https://leetcode.com/problems/two-sum/
Another Code : https://leetcode.com/problems/two-sum/discuss/212256/Kotlin-Clean
.
LIST'Algo' 카테고리의 다른 글
[LeetCode]Reverse Integer (0) 2019.06.22 [LeetCode] Climbing Stairs (0) 2019.05.06 [BOJ-2566]백준 알고리즘 2566 [Kotlin][Java] (0) 2019.04.28 [BOJ 2455] 백준 알고리즘 2455 (0) 2019.03.03 정해진 범위 안에 배수 구하기. (0) 2018.09.20