반응형 해시9 [프로그래머스] 베스트앨범 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 genres는 노래의 장르를 나타내는 문자열을 plays는 노래별 재생 횟수를 나타낸다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 모든 장르의 재생 횟수는 다르고, 장르에 속한 곡이 하나라면, 하나의 곡만 수록한다. 2. 풀이 해시 를 이용한 문제 풀이 key는 장르를 value는 총 재생 횟수를 나타내는 Hash를 생성한다. key는 장르를 value는 {고유번호, 재생횟수}를 나타낼 수 있는 Hash를 생성한다. 재생횟수 내림차순 고유번호 오름차순 장르별 총 재생 횟수를 내림차순.. 2021. 11. 25. [프로그래머스] 위장 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 주어진 의상을 조합한 수를 리턴한다. 의상을 조합할 때는 최소 1개의 옷을 입어야 하고, 의상 종류 당 최대 1개만 입을 수 있다. 중복된 의상은 없다. 2. 풀이 해시 를 이용한 문제 풀이 주어진 의상을 통해 key는 의상의 종류 value는 의상의 개수를 나타내는 Hash를 생성한다. 의상의 개수를 셀 때는 계산하기 쉽게 아무것도 안 입은 경우를 포함한 후 마지막에 모든것을 아무것도 안 입은 경우를 빼기 위해 리턴할 때 -1을 한다. 3. 코드 import java.util.*; class Solution { public int solution(String[][] clothes) { int answer = 1; Map hm.. 2021. 11. 25. [프로그래머스] 전화번호 목록 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 주어진 전화번호 중, 한 번호가 다른 번호의 접두어이면 false 아닐 경우 true를 리턴한다. 중복된 전화번호는 없다. 2. 풀이 해시 를 이용한 문제 풀이 모든 전화번호를 통해 key는 전화번호 value는 0을 가지는 Hash를 생성한다. for문을 통해 모든 전화번호가 전화번호 맨앞 2자리 숫자부터 마지막 자리 숫자까지 Hash에 있는지 탐색한다. 단, 탐색 전에 자기 자신의 번호를 구분하기 위해 Hash에서 자기 자신의 value는 1로 변경 후 탐색한다. 탐색이 끝난 후 다시 value는 0으로 변경한다. 3. 코드 import java.util.*; class Solution { public boolean sol.. 2021. 11. 25. [프로그래머스] 완주하지 못한 선수 [JAVA(자바)] ‘프로그래머스 코딩테스트 고득점 Kit’ 문제 입니다. 😀 문제 👉 1. 문제 마라톤에 참여한 선수 participant 와 마라톤을 완주한 선수 completion 을 통해 완주하지 못한 1명을 찾아라. 참가자 중에는 동명이인이 있다. 참가자의 이름은 1개 이상 20개 이하이며 알파벳 소문자로 이루어져 있다. 2. 풀이 해시 를 이용한 문제 풀이 key는 완주한 선수의 이름을 value는 해당 선수의 이름을 카운트하는 Hash를 생성한다. 참가자와 완주한 선수의 Hash를 통해 완주하지 못한 1명을 찾는다. 3. 코드 import java.util.*; class Solution { public String solution(String[] participant, String[] completion) {.. 2021. 11. 25. [LeetCode] 771. Jewels and Stones [Python(파이썬)] '파이썬 알고리즘 인터뷰'를 보고 작성한 글입니다. 😀 문제 👉 1. 문제 (보석과 돌) 돌에 보석이 몇개 있는지 구해라. (대소문자 구분) 2. 풀이 해시를 이용한 풀이 Counter를 이용한 풀이 파이썬 스타일을 이용한 풀이 3. 코드 해시를 이용한 풀이 from collections import defaultdict class Solution: def numJewelsInStones(self, jewels: str, stones: str) -> int: ret, dic = 0, defaultdict(int) for s in stones: dic[s] += 1 for j in jewels: ret += dic[j] return ret Counter를 이용한 풀이 from collecti.. 2021. 11. 23. [LeetCode] 347. Top K Frequent Elements [Python(파이썬)] '파이썬 알고리즘 인터뷰'를 보고 작성한 글입니다. 😀 문제 👉 1. 문제 (상위 K 빈도 요소) k번 이상 등장하는 요소를 추출하라. 2. 풀이 해시와 Counter를 이용한 풀이 zip()와 Counter를 이용한 풀이 3. 코드 해시와 Counter를 이용한 풀이 from collections import Counter class Solution: def topKFrequent(self, nums: List[int], k: int) -> List[int]: ret = [] cnt = Counter(nums).most_common(k) for i in range(k): ret.append(cnt[i][0]) return ret zip()와 Counter를 이용한 풀이 from colle.. 2021. 11. 23. [LeetCode] 3. Longest Substring Without Repeating Characters [Python(파이썬)] '파이썬 알고리즘 인터뷰'를 보고 작성한 글입니다. 😀 문제 👉 1. 문제 (중복 문자 없는 가장 긴 부분 문자열) 중복 문자가 없는 가장 긴 부분 문자열의 길이를 출력하라. 2. 풀이 해시와 투 포인터를 이용한 풀이 부분 문자열의 처음과 끝에 포인터를 위치 중복이 없으면 끝을 오른쪽으로 이동 중복이 있을 경우 처음을 오른쪽으로 이동 3. 코드 해시와 투 포인터를 이용한 풀이 class Solution: def lengthOfLongestSubstring(self, s: str) -> int: ret, start = 0, 0 used = {} for idx, char in enumerate(s): if char in used and start 2021. 11. 23. [LeetCode] 49. Group Anagrams [Python(파이썬)] '파이썬 알고리즘 인터뷰'를 보고 작성한 글입니다. 😀 문제 👉 1. 문제 (그룹 에너그램) 문자열 배열을 받아 애너그램 단위로 그룹핑하라. 애너그램이란 문자를 재배열하여 다른 뜻을 가진 단어로 바구는 것 ('문전박대' -> '대박전문') 2. 풀이 해시 를 이용한 풀이 sorted()를 이용해 문자열 정렬 오름차순 sorted(arr) 내림차순 sorted(arr, reverse=True) defaultdict를 통해 애너그럼 그룹핑 3. 코드 해시를 이용한 풀이 from collections import defaultdict class Solution: def groupAnagrams(self, strs: List[str]) -> List[List[str]].. 2021. 11. 23. [LeetCode] 1. Two Sum [Python(파이썬), JAVA(자바)] '파이썬 알고리즘 인터뷰'를 보고 작성한 글입니다. 😀 문제 👉 1. 문제 (두 수의 합) 덧셈하여 타겟을 만들 수 있는 배열의 두 숫자 인덱스를 리턴하라. 2. 풀이 해시를 이용한 풀이 3. 코드 (Python) 해시를 이용한 풀이 class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: dic = {} for idx, val in enumerate(nums): num = target - val if num in dic: return [dic[num], idx] else: dic[val] = idx 결과 : 방식 Status Runtime Memory Language 해시 [Accepted] 60 ms 15... 2021. 11. 23. 이전 1 다음 반응형