반응형

얼마 전에 오랜만에 코딩 시험을 치루며, 구글링 없이 문법조차 다 까먹어 C언어로 제대로 코딩할 수 없던 날 발견했다. Java로 풀어볼까도 했지만, 라이브러리 없이 코딩을 해나가야하는 것도 자신이 없어 시험 시작 1시간 후, 시험을 중도 종료를 하였다. 그래서 이번에 다시 코딩 공부를 시작하며, 8년전 학부 1학년 때 살짝 배웠던 Python을 내 두번째 메인 개발 언어로 만들어 보고자 한다. 

 

 

 

 

오랜만에 코딩공부를 시작하며 LeetCode에 가입하고, 첫 날이니 Easy 에서도 제일 첫번째에 있던 #1 Two Sum을 골라보았다.

 

 

Solution

// JAVA
class Solution {
    public int[] twoSum(int[] nums, int target) {
        Map<Integer, Integer> map = new HashMap();
        
        for(int i=0 ; i < nums.length ; i++)
            map.put(nums[i], i);
        
        for(int i=0 ; i < nums.length ; i++)
            if(map.containsKey(target-nums[i]) && i != map.get(target - nums[i]))
                return new int[] {i, map.get(target-nums[i])};
        
        return new int[2];
    }
}

 

Python Dictionaries(딕셔너리)는 Java에서 HashMap과 같은 기능을 하며 key:value 형식으로 값을 저장한다. 
선언을 할 때에는 보통은 parameterName = {} 를 사용하고 parameterName = dict()로도 생성가능하다.
(List 생성은 =[], =list())

// Python
class Solution:
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        complement_dict = {} // 딕셔너리 생성
        nums_len = len(nums)
        for i in range(nums_len):
            complement = target - nums[i]
            if complement in complement_dict:
                return [complement_dict[complement], i]
            else:
                if nums[i] in complement_dict:
                    continue
                complement_dict[nums[i]] = i

 

 

 

[참고]

leetcode.com/problems/two-sum/

 

Two Sum - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

dojang.io/mod/page/view.php?id=2213

 

파이썬 코딩 도장: 12.1 딕셔너리 만들기

지금까지 살펴봤던 리스트와 튜플은 값 여러 개를 일렬로 저장할 뿐 값끼리 연관 관계가 없었습니다. 예를 들어 게임 캐릭터의 능력치를 리스트에 저장해보겠습니다. 리스트 lux에서 인덱스 0은

dojang.io

 

반응형

+ Recent posts