ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [LeetCode] Two sum
    Algo 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

      댓글

    Designed by Tistory.