[LeetCode] 1726. Tuple with Same Product (Python)
·
코딩 테스트
Problem Solutionpermutation순열과 조합을 사용하여 푸는 문제.defaultdict 의 value를 리스트로 선언하여 2개의 integer 곱을 key로, tuple 을 value로 저장하였다.value 길이 (리스트)가 2 이상이면 value 길이만큼 8 x nC2 를 곱하여 경우의 수를 구하고 정답에 ++ 하였다.8을 곱하는 이유는 a*b = c*d 인 (a,b,c,d)의 경우의 수가 8이기 때문! ( 4permutation * 2 pairs)nC2를 한 이유는 value 길이 = n 에서 2개의 튜플을 선택해야되기 때문! Codefrom collections import defaultdictclass Solution: def tupleSameProduct(self, nums..
[LeetCode] 1800. Maximum Ascending Subarray Sum (Python)
·
코딩 테스트
ProblemSolutionsliding window이전 문제와 유사하게 sub array 중 오름차순이면서 총 원소합의 최대값을 구하는 문제.num array 가 100 이하라서 2중 포문을 사용해되지만 최대한 fot문을 1번만 사용하려고했다. 강력한 힌트는 The end of each ascending subarray will be the start of the nextsubarray 만들고 체크한 마지막 인덱스가 다음 순회 인덱스의 첫번째 인덱스가 된다. 아래 코드에서 idx 가 그 역할. 아래는 더 깔끔한 코드가있어서 가져와봤다.아예 처음부터 처음 0번째 값을 넣은 리스트를 선언 후 증가하는 값이 나올때마다 리스트에 추가 (cur list)작아지는 숫자가 나오면 max 값 구하고 다시 cur li..
[LeetCode] 637. Average of Levels in Binary Tree (Python)
·
코딩 테스트
Problem SolutiondequedefaultdictBinary Tree 문제로 같은 레벨의 노드의 합 평균값을 구하는 문제.값은 float 으로 반환해야된다.left/right node를 순회하면서 defaultidct에 각 레벨별 노드값을 저장한다.마지막에 defaultdict 에 저장된 데이터를 for문을 돌면서 합계와 평균값을 구한다. 아래는 다른 사람 풀이 중 하나def averageOfLevels(self, root: Optional[TreeNode]) -> List[float]: queue = [root] ans = [] while queue: no_nodes_in_curr_level = len(queue) s..
[LeetCode] 66.Plus One (Python)
·
코딩 테스트
Problem Solutionstring1자리수 integer가 포함된 list 가 주어지고 이를 숫자로 변환 후 +1한 digit의 자리수를 list에 담아서 반환하는 문제.string -> int +1 -> string -> int 로 변환해서 풀었다.다른 사람 풀이를 보니 대부분 이렇게 푼듯 더 효율적인 코드는 아래와 같다.def plusOne(self, digits: List[int]) -> List[int]: n = len(digits) for i in range(n - 1, -1, -1): #n-1 부터 뒤에서 앞으로 반복한다. 즉 마지막 숫자부터 시작 if digits[i] 시간 복잡도는 digits 길이만큼 수행되므로 O(N)공간 복잡도는 dig..
[LeetCode] 242. Valid Anagram
·
카테고리 없음
Problem SolutionHash문자열이 각각 동일한 수의 char 을 가지고있는지 체크하는 간단한 문제.hash 를 사용하여 각각의 character 의 수를 count 한다.python에 Counter 모듈을 사용해서 한 줄로 해결한 코드를 발견하였다.class Solution: def isAnagram(self, s: str, t: str) -> bool: return Counter(s) == Counter(t) Codeclass Solution: def isAnagram(self, s: str, t: str) -> bool: answer = True mapS, mapT = {}, {} if len(s) != len(t): ..
[프로그래머스] 베스트앨범 (Python)
·
코딩 테스트
1. 문제 https://programmers.co.kr/learn/courses/30/lessons/42579?language=python3 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr 2. 풀이 1) 가장 많이 재생된 장르순으로 정렬한다. 2) 가장 많이 재생된 play 순으로 정렬한다. 3) play 수가 동일하면 가장 작은 index 먼저 정렬한다. 3. 코드 def solution(genres, plays): answer = [] genres_cnt = {} for i in range(len(g..