목록알고리즘/프로그래머스 (12)
잘 정리해보자
class ArrayStack: def __init__(self): self.data = [] def size(self): return len(self.data) def isEmpty(self): return self.size() == 0 def push(self, item): self.data.append(item) def pop(self): return self.data.pop() def peek(self): return self.data[-1] #문자열 나누기 def splitTokens(exprStr): tokens = [] val = 0 valProcessing = False for c in exprStr: if c == ' ': continue if c in '0123456789': val =..
프로그래머스 고득점 kit - 정렬 H-Index (Level 2) def solution(datas): answer = 0 sort = sorted(datas) length = len(datas) for i in range(length) : if sort[i] >= length-i : return length-i return answer 문제 : https://programmers.co.kr/learn/courses/30/lessons/42747
프로그래머스 고득점 kit - 해시 전화번호 (Level 2) 1. def solution(phone_book): answer = True minIdx = phone_book.index(min(phone_book)) minVal = phone_book[minIdx] for idx,val in enumerate(phone_book) : if minIdx != idx : if minVal == val[:len(minVal)] : answer = False break return answer 2. def solution(phone_book): answer = True phone_book = sorted(phone_book) for n1,n2 in zip(phone_book, phone_book[1:]) : i..
프로그래머스 고득점 kit - 스택/큐 프린터 (Level 2) 1. def solution(p_arr, loc): answer = 0 i_arr = [(v,i) for (i,v) in enumerate(p_arr)] idx = 0 while len(i_arr) : if i_arr[idx][0] < max(i_arr)[0] : i_arr.append(i_arr[idx]) i_arr.pop(idx) else : d = i_arr.pop(idx) answer += 1 if d[1] == loc : break return answer 2. deque 사용 from collections import deque def solution(p_arr, loc): answer = 0 i_arr = deque([(v,i)..
프로그래머스 고득점 kit - 스택/큐 기능개발 (Level 2) import math def solution(progresses, speeds): answer = [] p_num = 100 #arr : 소요시간 계산 arr = [math.ceil((p_num-p)/s) for (p,s) in zip(progresses,speeds)] f_num = 0 cnt = 1 for i in range(len(arr)) : if i == 0 : f_num = arr[i] else : if f_num < arr[i] : answer.append(cnt) f_num = arr[i] cnt = 1 else : cnt += 1 if i == len(arr)-1 : answer.append(cnt) print(arr) p..
class ArrayStack: def __init__(self): self.data = [] def size(self): return len(self.data) def isEmpty(self): return self.size() == 0 def push(self, item): self.data.append(item) def pop(self): return self.data.pop() def peek(self): return self.data[-1] prec = { '*': 3, '/': 3, '+': 2, '-': 2, '(': 1 } def solution(S): opStack = ArrayStack() answer = '' for w in S : if w in prec : if opStack.isE..
LRU(Least Recently Used) Cache 알고리즘 : 가장 오래된 페이지부터 삭제 데이터 베이스의 메모리 관리의 가장 중요한 원리 python memory = []; total = 0 lowArr = list(map(lambda x : x.lower(),arr)) for i in lowArr : if i in memory : total += 1 memory.remove(i) #메모리에 데이터가 있으면 삭제 else : total += 5 memory.append(i) #새로운 데이터 추가 if len(memory) >= size : #주어진 메모리크기보다 크면 옛날데이터 삭제 del(memory[0]) return total cacheProcess(['Jeju', 'Pangyo', 'Seo..
python def solution(n, arr1, arr2): answer = [] for i in range(n) : a = bin(arr1[i] | arr2[i]).replace('0b','').zfill(n) #zfill : 자리수 맞추기 a = a.replace('1','#').replace('0',' ') answer.append(a) return answer n = 5 arr1 = [9,20,28,18,11] arr2 = [30,1,21,17,28] solution(n,arr1,arr2) //실행결과 : //['#####', '# # #', '### #', '# ##', '#####'] 문제 : programmers.co.kr/learn/courses/30/lessons/17681