Python 51

[Python] 리트코드 Hash Table, Sorting 문제 (767. Reorganize String) 딕셔너리 정렬

https://leetcode.com/problems/reorganize-string/ Reorganize String - 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 주어진 s를 붙어있는 문자들이 겹치치 않도록 재 정렬하는 문제이다. ==풀이== 각 문자의 빈도수 구해서 딕셔너리를 내림차순 정렬 answer에 [0]부터 2씩 건너뛰며 단어 입력. 끝까지 돌았다면 이번엔 [1]부터 단어 입력 * 만약 최대 빈도수 값이 s의 총개수보다 크다면 한 바퀴를 돌고 맨..

알고리즘 2022.03.14

[Sliding Window] with 예시문제 2가지

슬라이딩 윈도우는 네트워크를 공부할 때 배웠던 개념인데 이 방식을 알고리즘 문제에 적용시켜 풀기도 한다. 범위를 일정하게 고정시켜서 그 범위를 이동시켜가면서 데이터를 비교한다. two pointer알고리즘과 비슷한 알고리즘이다. [문제 1] 문자열 s에서 반복되는 알파벳이 없는 가장 긴 substring의 길이를 구하라. var lengthOfLongestSubstring = function (s) { let max = 0; let l = 0; for (let r = 0; r < s.length; r++) { const idx = s.slice(l, r).indexOf(s[r]); if (idx === -1) { max = Math.max(max, r + 1 - l); } else { l += idx +..

알고리즘 2022.02.16

[Two Pointer #1] 대표 문제 + 풀이

[문제 1] 오름차순 정렬된 nums배열의 모든 요소를 제곱한 값을 정렬된 배열로 반환하라. (ex. nums = [-4,-1,0,3,10] 일 때 정답은 [0,1,9,16,100] 이다.) var sortedSquares = function(nums) { let left = 0; let right = nums.length-1; const answer = [] while(left Math.abs(nums[right])){ answer.push(Math.pow(nums[left], 2)); left ++ }else{ answer.push(Math.pow(nums[right], 2)); right -- } } return answer.reverse() }; class Solution: def sortedSq..

알고리즘 2022.02.13

[Python] 리트코드 140. Word Break II

https://leetcode.com/problems/word-break-ii/ Word Break II - 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 class Solution: def wordBreak(self, s: str, wordDict: List[str]) -> List[str]: def isInDict(start, words): # 4. 3에서 end+1하기 땜에 시작위치가 len(s)라면 정상적으로 찾은거 if start == len(s): a..

알고리즘 2022.01.10

[Python] 리트코드 491. Increasing Subsequences

https://leetcode.com/problems/increasing-subsequences/ Increasing Subsequences - 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 이 문제는 예전에 풀었던 문제와 방식이 비슷했다. https://leetcode.com/problems/letter-tile-possibilities/ Letter Tile Possibilities - LeetCode Level up your coding skills and..

알고리즘 2022.01.03

[Python] 리트코드 763. Partition Labels(Hash)

https://leetcode.com/problems/partition-labels/ Partition Labels - 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 문제의 첫 번째 예시에서(ababcbacadefegdehijhklij) 제일 처음 알파벳인 a를 자르려면 최소 [8]까지는 한 파트로 묶어 잘라야 나머지 파트에 a가 포함되지 않는다. 그렇게 0~8까지를 한 파트로 묶으면 그 안의 알파벳들 중 나머지 부분에 포함되는 알파벳은 하나도 없다. 그러니 이..

알고리즘 2021.12.31

[Python] 리트코드 313. Super Ugly Number(Hash)

https://leetcode.com/problems/super-ugly-number/ Super Ugly Number - 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 이 문제는 예전에 풀었던 264. Ugly Number II (https://leetcode.com/problems/ugly-number-ii/) 이 문제와 비슷하다. 그래서 그 문제를 응용해서 풀어보았다. 결국 primes factors를 구하는 문제인건데 주어지는 primes에 있는 숫자들로..

알고리즘 2021.12.31

[Python] 리트코드 583. Delete Operation for Two Strings

https://leetcode.com/problems/delete-operation-for-two-strings/ Delete Operation for Two Strings - 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 먼저 word1이랑 word2에서 공통된 알파벳들을 알아낸다. 공통되지 않은 알파벳들은 조작되어야 하는 알파벳이므로 word1과 word2의 각 length를 비교해 그 차이만큼 답으로 리턴한다. 공통된 알파벳을 가려내는데 고려해야 하는 사항..

알고리즘 2021.12.02

[Python] 프로그래머스: 베스트앨범(딕셔너리 활용)

https://programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr import collections def solution(genres, plays): answer = [] # 1 sumOfGenres = collections.defaultdict(int) # 장르별 총 재생 횟수 playsListDict = collections.defaultdict(list) # 장르별로 나눠서 재생횟수와 인덱스 리스트로 저장 # 2 fo..

알고리즘 2021.11.09