본문 바로가기

분류 전체보기

프로그래머스 호텔 방 배정 import sys sys.setrecursionlimit(10000) def find(room_number, assignment): if room_number not in assignment : assignment[room_number] = room_number + 1 return room_number empty_room = find(assignment[room_number], assignment) assignment[room_number] = empty_room + 1 return empty_room def solution(k, room_number): answer = [] assignment = {} for request_room_number in room_number: num = find(requ.. 더보기
프로그래머스 징검다리 건너기 def solution(stones, k): minimum = 0 maximum = 200000000 person = maximum // 2 while True: # 건널 수 있나? possible = True cnt = 0 for i in stones : if i < person : cnt += 1 else : cnt = 0 if cnt == k : possible = False break # 건널 수 있으면 if possible : minimum = person next = (person + maximum) // 2 if person == next : return person person = next # 건널 수 없으면 else : maximum = person next = (person + mini.. 더보기
프로그래머스 - 디스크 컨트롤러[heap] import heapq def solution(jobs): jobLen = len(jobs) jobs.sort() waitSum = 0 time = jobs[0][0] for comeIn, jobTime in jobs: if comeIn > time: time = comeIn + jobTime else: time += jobTime waitSum += time - comeIn answer1 = waitSum // jobLen waitSum = 0 time = jobs[0][0] heap = [] task = jobs.pop(0) heapq.heappush(heap, (task[1], task)) while jobs or heap: if heap: task = heapq.heappop(heap)[1] if.. 더보기
프로그래머스5 - 방의 개수 def solution(arrows): direction = [ [0,1], [1,1], [1,0], [1,-1], [0,-1], [-1,-1], [-1,0], [-1,1], ] answer = 0 dic = {} path = {} x, y = 0, 0 dic[str([x, y])] = True for item in arrows: for i in range(2) : nextx, nexty = x + direction[item][0], y + direction[item][1] pathKey = str([x, y, nextx, nexty]) pathKey2 = str([nextx, nexty, x, y]) dicKey = str([nextx, nexty]) if not dicKey in dic : path[.. 더보기
릿코드 3 - Longest Substring, 카카오 보석쇼핑 def solution(gems): mySet = set(gems) setLen = len(mySet) minCount = 100001 if setLen == 1: return [1, 1] dic = {} for i in mySet: dic[i] = 0 r, l = 0, 0 dic[gems[0]] += 1 while r ran : minCount = ran ans = [l+1, r+1] if ran == setLen-1 : return ans dic[gems[l]] -.. 더보기
시큐어코딩 대선배 개발자분과의 대화를 정리해봤습니다 😀 초보자인 제 생각을 정리한 글입니다 시큐어 코딩? 소프트 웨어를 개발하는 데에 있어서 개발자의 실수, 논리적 오류 등으로 인해서 SW에 내포될 수 있는 보안 취약점을 배제하기 위한 코딩 기법을 뜻한다. 시큐어코딩을 지키기 위한 가이드도 물론 존재한다. KISA에서 제공해주는 기술 안내서 가이드에 보면 JAVA, C 시큐어 코딩 가이드라인이 있다. 참고 : https://www.kisa.or.kr/public/laws/laws3.jsp (언어가 두개밖에 없네,,?) KISA의 시큐어 코딩 가이드는 보안적인 내용과 함께 안전한 소프트웨어를 만들기 위한 가이드라인을 제시한다. 사실 시큐어 코딩이라고 하면 처음엔 보안을 지키기 위한 코딩인가? 라고만 생각했었다. 시큐.. 더보기
함수형 프로그래밍2 - 추상화 레벨 높이기 이미지 로딩 이전의 실습에서 이미지가 로딩 될때 굉장히 버벅거렸는데 이러한 부분들을 개선해볼 것이다. 이미지가 로딩이 다 되면 화면에 렌더링되도록 코드를 작성해보자. _.go( Images.fetch(), Images.tmpl, $.el, $.append($.qs('body')), _.tap( $.findAll('img'), L.map(img => new Promise(resolve => { img.onload = () => resolve(img); // onload img.src = img.getAttribute('lazy-src'); })), _.each($.addClass('fade-in')) ), $.findAll('.remove'), $.on('click', async ({currentTarge.. 더보기
릿코드 84 - Largest Rectangle in Histogram class Solution: def largestRectangleArea(self, heights: List[int]) -> int: tmp = [heights[0]] cnt = [1] for i in range(1, len(heights)) : if heights[i] == tmp[-1] : cnt[-1] += 1 else : tmp.append(heights[i]) cnt.append(1) heights = tmp max = 0 for idx, item in enumerate(heights) : tmp = cnt[idx] for i in range(idx + 1, len(heights)) : if heights[i] < item : break tmp += cnt[i] for i in range(idx.. 더보기
릿코드 338 - 2진법 변환 class Solution: def countBits(self, n: int) -> List[int]: ans = [] for i in range(n+1): cnt = 0 while i != 0 : if i % 2 : cnt += 1 i = i // 2 ans.append(cnt) return ans 너무 간단한 이진법 문제. 파이썬의 내장함수와 속도를 비교해봤다. class Solution: def countBits(self, n: int) -> List[int]: ans = [] for i in range(n+1): ans.append(bin(i).count(str(1))) return ans 훨씬 빠르다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 수가 작을때는 첫번째 코드가 더 빠르지만 수가 커지면 bin() 과 coun.. 더보기
함수형 프로그래밍2 - 프론트단에서 응용 https://www.inflearn.com/course/%ED%95%A8%EC%88%98%ED%98%95_ES6_%EC%9D%91%EC%9A%A9%ED%8E%B8f 를 수강하며 내용을 정리한 글입니다. 이미지 받아와서 화면에 뿌리기 서버에서 이미지를 받아와서 화면에 뿌려주는 코드 작성해본다. const Images = {} Images.fetch = () => new Promise(resolve => setTimeout(() => resolve([ { name: "HEART", url: "https://s3.marpple.co/files/m2/t3/colored_images/45_1115570_1162087.png" }, { name: "하트", url: "https://s3.marpple.co/f1/.. 더보기