1. 베스트앨범 (해시 테이블) ★ (이차원 함수의 정렬)
2024. 7. 17. 23:24
프로그래머스/Lv. 3
유형 : 해시풀이 시간 : 20분 def solution(genres, plays): answer = [] gendict = {} for i in range(len(genres)): if genres[i] in gendict: gendict[genres[i]][0] += plays[i] gendict[genres[i]][1].append([plays[i], i]) else: gendict[genres[i]] = [plays[i], [[plays[i], i]]] vlist = list(gendict.values()) vlist.sort(reverse = True) for v i..
6. 전화번호 목록 ★★ (hash table, startswith)
2024. 7. 17. 22:49
프로그래머스/Lv. 2
유형 : 해시구현 시간: 30분 -> 인터넷 검색 1. 이중 루프def solution(phone_book): for i in range(len(phone_book)): for j in range(i+1, len(phone_book)): if phone_book[i] in phone_book[j] or phone_book[j] in phone_book[i]: return False return True i로 순회하면서 i 이후부터의 아이들과 대조하도록 하였다. (당연히) 시간 초과. 2. key 찾기 def solution(phone_book): lenlist = [[x, len(x)] for x in phone_book] ..
5. 숫자의 표현 ★ (스킬 체크 lv2)
2024. 7. 17. 19:39
프로그래머스/Lv. 2
유형: 구현풀이 시간: 10분 def solution(n): answer = 0 i = 0 while True: i += 1 if i >= n: break acc = 0 j = i while True: acc += j j += 1 if acc == n: answer += 1 if acc > n: break return answer+1 근데 두 번째로 할 때는 안됐다. 왜일까. 솔직히 내가 직접 한 게 아니고 아까 한 걸 떠올려서 했다. 꼭 다시 해 보자.
4. 이진 변환 반복하기 (bin, oct, hex)
2024. 7. 17. 03:30
프로그래머스/Lv. 2
유형 : 구현풀이 시간 : 5분 ◈def solution(s): disappear = 0 cnt = 0 while True: if s == "1": break beforelen = len(s) s = s.replace("0", "") disappear += beforelen - len(s) s = bin(len(s))[2:] cnt += 1 return [cnt, disappear] bin을 이용해 쉽게 풀었다.
3. JadenCase 문자열 만들기 (capitalize, title)
2024. 7. 17. 03:23
프로그래머스/Lv. 2
유형 : 구현 풀이 시간 : 5분 def solution(s): answer = [x.capitalize() for x in s.split(" ")] ans = '' for x in answer: if answer.index(x) == len(answer)-1: ans += x break ans += x ans += " " return ans
2. 최솟값 만들기 (zip, map)
2024. 7. 17. 03:14
프로그래머스/Lv. 2
유형 : 구현 (그리디?)풀이 시간 : 10분 1. 나의 풀이def solution(A,B): answer = 0 A.sort() B.sort(reverse = True) res = [] for i in range(len(A)): res.append(A[i] * B[i]) return sum(res) 2, map을 사용한 풀이def solution(A,B): return sum(map(lambda a, b : a*b, sorted(A), sorted(B, reverse = True))) map (함수, iterable) 3. zip을 이용한 풀이두 개의 list를 묶을 때 zip을 사용할 수 있다. def solution(A,B): ..
1. 올바른 괄호 (stack)
2024. 7. 17. 03:03
프로그래머스/Lv. 2
유형 : 스택 / 큐풀이 시간 : 5분 def solution(s): slist = list(s) stack = [] for i in range(len(slist)): if slist[i] == '(': stack.append('(') else: if stack and stack[len(stack)-1] == '(': del stack[len(stack)-1] else: return False if stack: return False return True 괄호는 대표적인 stack을 활용하는 문제이다.
56. 신고 결과 받기
2024. 7. 17. 02:53
프로그래머스/Lv. 1
유형 : 구현풀이 시간 : 10분 def solution(id_list, report, k): answer = [] userreport = [[] for ids in id_list] reportedcnt = [0 for i in range(len(id_list))] reported = [] for rp in report: rp = rp.split(" ") if rp[1] in userreport[id_list.index(rp[0])]: continue else: reportedcnt[id_list.index(rp[1])] += 1 userreport[id_list.index(rp[..