게시글 카테고리

LeetCode

Element 2개일 때 1개 무시, 하나에 대해서만 조작하기 / for 문 한 번에 쓰기

element가 2개 있을 때, 하나를 씹어버리고 나머지 하나에 대해서만 sum 연산이라던지, 이를 조작할 수 있는 코드가 있어서 기억을 위해 포스팅하고자 한다.  프로그래머스의 Hash - 베스트앨범 문제이다.  우선 이전 포스팅으로 여러 tuple을 value로 가지고 있는 dict()를 생성해 주었고, 위처럼 생겼다. tuple의 2번째 element가 재생 횟수인데, 가장 재생이 많이 된 장르를 찾고자 한다. 이럴 때, value들을 for 문으로 순회해주는데, 원래는 element가 2개니까 for index, play in dict[genre]:          ~~~ 이런 식으로 접근해야 한다. 하지만,  sum(play for _, play in dict[genre])이렇게 _를 사용하고 ..

LeetCode

[프로그래머스] Hash - 하나의 Key에 여러 Tuple value

오늘도,,  저번 포스팅의 연장선인데, 딕셔너리에서 하나의 key에 여러 값 추가하기이다. 저번에는 하나의 key에 여러 value들을 리스트로 추가해줬다. key : [val1, val2, val3] 이런 식으로다. 그런데 이제는 하나의 key에 여러 value들을 tuple로도 추가해줄 수 있다는 사실을 깨달았다. 이번에 문제를 풀면서 도대체 index를 어떻게 같이 관리해야 하나 싶었는데, tuple로 인덱스값도 같이 저장해줄 수 있다. 처음에 추가할 때는 [(i, value)] 이렇게 추가해주고, 나중에는 .append([i, value2]) 이런 식이다.  결과는 이렇게 된다: key : [(0, val1), (1, val2), (2, val3)]  이렇게 하면 인덱스까지 관리가 된다. 문제와 ..

LeetCode

zip() 함수 사용하기

zip()을 쓰는 사람들이 멋있어 보이고 간편해 보였다.  찾아보니 zip()은 여러 리스트의 동일한 위치에 있는 애들을 묶어서 도는 것 같다.  어차피 아마 element들 만 빼내는 용도로 쓸 것 같다.  예시 코드를 그냥 한 번 쳐보자. list1 = [a, b, c]list2 = [1, 2, 3] for char, num in zip(list1, list2):        --     이런 식으로 a와 1, b와 2,     ---         -- 이런 요소들에 접근할 수 있다. ---

LeetCode

[프로그래머스] Hash - 하나의 Key에 여러 Value 더하기

오늘도 역시.."If you have a problem, just throw a hashmap"    오늘은 해시맵 key 하나에 여러 value들을 assign 하는 방법이다. 바로 애초에 하나를 추가할 때 list로 추가해주고, 이미 value가 있으면 list에 .append() 해주는게 방법이다.   코드로 보자. 오늘은 LeetCode가 아닌 프로그래머스에서 가져왔다.   저렇게 뭐가 리스트로 주욱 왔는데, 카테고리 별로 아이템이 있으니,문제 설명 부분의 표처럼 해시맵으로 정리하고자 했다.   없으면 추가해줄 때 [cloth] 이렇게 리스트로 감싸주고 추가해주면 된다.이렇게 안하면 추후에 append가 안되기 때문에 대괄호로 감싸줘야한다. 여기서는 string이 들어가는데, list(cloth)..

LeetCode

[Sliding Window] Minimum Size Subarray Sum

Two-pointer technique에 있는 문제인데, sliding window라는 방법론으로 풀 수 있다고 하여 다뤄보고자 한다. CNN 필터가 슥슥 지나가는 것처럼 window의 길이를 다루고, 이를 한 칸씩 옆으로 옮겨보는 방법으로 subarray들을 체크할 수 있다. i와 j를 같이 돌릴건데, ij 같이 있다가 i, j / i,,j / i,,,j / i,,,,,j 이런 식으로 j를 늘려가면서 체크하고,nums[i]를 빼주고 i 인덱스를 증가시켜준다. 코드를 주석과 함께 보자.   시간복잡도가 while이 2개 들어가서 별 고민없이 O(n^2)인 줄 알았으나, subarray 체크하는 부분에서 늘어나는거만큼 우리가 왼쪽의 i에서도 줄여주기 때문에, O(n)이라고 한다.공간복잡도는 scalar v..

LeetCode

[Two Pointer technique]

Two pointer technique는 다음과 같은 상황에서 사용한다. 예를 들어, array를 reverse하는 경우, 한 포인터는 맨 앞에서, 한 포인터는 맨 뒤에서 시작해서 하나하나 바꿔나가면 된다. 파이썬은 reverse()가 있긴 하다. 이런 식으로 두 포인터의 속도를 다르게 하는 방법도 있다. 예를 들어, 리스트의 중간의 element를 가져오고 싶다면 한 포인터는 한 칸씩 가도록, 한 포인터는 두 칸씩 가도록 해서 속도가 더 빠른 포인터가 끝에 도달할 때, 속도가 느린 포인터는 중간 element를 가져올 것이다. 또한, 한 포인터는 한 칸 먼저 빨리 시작시키고, 두 번째 포인터는 한 칸 느리게 시작시키면서 앞 뒤를 비교하는 방법도 있을 것이다. *이 테크닉은 주로 sorted array에..

LeetCode

[String] Find the Index of the First Occurrence in a String

*Python에는 find() 함수를 이용할 수 있다!*find() 함수는 그 string을 찾아주고 처음으로 등장하는 인덱스 하나만을 리턴하는 함수이다.*어디서찾는지.find("찾아야할 단어") 이렇게 사용한다.  간단히 말해서 어떤 단어가 처음으로 나타나는 index를 리턴하면 되는 문제이다. 내 처음 코드는 다음과 같았으나... find() 함수를 쓰면 우리가 원하는걸 (심지어 return -1까지도) 한 방에 얻을 수 있다는 걸 깨달았다.

LeetCode

[String] Add Binary

기억해야하는 것: for 문으로 string을 돌면서 뒤부터 접근할 수 있는 인덱싱 방법이 있다! *for i in range()일 때, string[-1]이 맨 끝 문자니까 string[-1-i]로 그만큼 더 빼버리면 맨 뒤에서부터 하나씩 올라간다! (string도 list처럼 string[0] 이런식으로 인덱싱 한다) **string[-1-i] string[-1-i] string[-1-i] string[-1-i] string[-1-i] string[-1-i] string[-1-i] string[-1-i] string[-1-i]

LeetCode

[2D Array] Spiral Matrix

2D Array를 traverse 하는데에 아주 좋은 테크닉이 있어 정리를 해보려고 한다. 코드트리에서 수강한 내용으로, 바로 dx dy 테크닉이다. 문제를 보면 2D Array를 시계방향으로 순환하며 돌아야하는 형태이다. 여기서 index의 시계방향 전환을 쉽게 해주는 dx dy 테크닉이란,  이렇게 좌표를 미리 세팅해주는 것을 뜻한다. 미리 dx와 dy 리스트를 만들어놓고 그 안에 방향값을 저장해놓으면, dx dy의 인덱스만 바꾸어도 x,y 좌표 방향을 한 번에 전환해줄 수 있다. 초기의 방향은 정하기 나름인데, 이 문제의 경우 일단 시작하면 동쪽으로 가기 때문에 동쪽을 0으로 놓고 초기 방향인 dir_num에 0을 할당해 주었다(dir_num = 0). 이때 중요한 것은 dx dy의 값은 리스트 m..

LeetCode

[HashMap] Ransom Note

HashMap = Dictionary in python  The point of this problem is to create a HashMap that stores the counts of the letters that appears in magazine, and subtract counts if the same letter is in ransomNote.  The problem was setting the if conditions,  1. char must be in the counter (obiviously), otherwise we cannot make ransomNote with magazine2. Each letter should be used once in magazine, so the wo..

ShinyJay
'분류 전체보기' 카테고리의 글 목록 (2 Page)