Loading...

가운데를 말해요 (python, 우선순위큐)

문제 수빈이는 동생에게 "가운데를 말해요" 게임을 가르쳐주고 있다. 수빈이가 정수를 하나씩 외칠때마다 동생은 지금까지 수빈이가 말한 수 중에서 중간값을 말해야 한다. 만약, 그동안 수빈이가 외친 수의 개수가 짝수개라면 중간에 있는 두 수 중에서 작은 수를 말해야 한다. 예를 들어 수빈이가 동생에게 1, 5, 2, 10, -99, 7, 5를 순서대로 외쳤다고 하면, 동생은 1, 1, 2, 2, 2, 2, 5를 차례대로 말해야 한다. 수빈이가 외치는 수가 주어졌을 때, 동생이 말해야 하는 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에는 수빈이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 수빈이가 외치는 정수가 차례대로..

22. Generate Parentheses

Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses. For example, given n = 3, a solution set is: [ "((()))", "(()())", "(())()", "()(())", "()()()" ] 순열 조합 문제인 줄 알았으나 dfs로 풀기 때문에 브루트 포스, 그리디 문제 같다. left는 넣을 수 있는 왼쪽 괄호의 개수, right는 넣을 수 있는 오른쪽 괄호의 개수이다. left,right 하나씩 넣어주지만 오른쪽 괄호는 왼쪽 괄호가 하나이상 존재할 때만 넣을 수 있다. left List[str]: def genParent(s,left,..

680. Valid Palindrome II

Given a non-empty string s, you may delete at most one character. Judge whether you can make it a palindrome. Example 1: Input: "aba" Output: True Example 2: Input: "abca" Output: True Explanation: You could delete the character 'c'. Note: The string will only contain lowercase characters a-z. The maximum length of the string is 50000. 1. 브루트포스 풀이 (시간 초과) 처음에 이렇게 풀었더니 시간 초과가 나왔다. 배열의 길이가 O(n)인데 ..

[Leetcode] 819. most common word (python, javasciript)

1. python from collections import defaultdict import re class Solution: def mostCommonWord(self, paragraph: str, banned: List[str]) -> str: dict=defaultdict(int) paragraph=re.sub(r'[^\w]',' ',paragraph) # print(paragraph) for p in paragraph.lower().split(): if p not in banned: dict[p]+=1 return max(dict,key=dict.get) cnt=collections.Counter(dict) 해서 return cnt.most_common(1)[0][0]으로 가져오는 방법도 있다 ..

[LeetCode] 937. Reorder Data in Log Files (python, javascript)

1. python class Solution: def reorderLogFiles(self, logs: List[str]) -> List[str]: nums=[] letters=[] for log in logs: if log.split()[1].isdigit(): nums.append(log) else: letters.append(log) # slice로 잘라서 그 후를 모두 지정할 수 있다 letters.sort(key=lambda x:(x.split()[1:],x.split()[0])) # print(nums) # print(letters) return letters+nums 2. javascript /** * @param {string[]} logs * @return {string[]} */ var..

React의 Virtual DOM에 대해 알아보자

* 이 글은 아래 글을 읽고 공부하면서 요약 정리한 글입니다 velopert.com/3236 virtual DOM의 작동원리를 이해하기 위해서는 브라우저 렌더링 과정에 대해서 이해해야 한다. 이전에 브라우저 렌더링 과정을 정리한 글이 있으니 한 번 읽어보자. 2020/09/17 - [FE면접준비] - 브라우저 렌더링 과정 리액트는 '뷰' 만을 담당하는 라이브러리이며 DOM에 변화가 생겼을 때 변경사항을 적용하는 것이 아니라 기존 뷰를 날리고 다시 새로운 뷰를 렌더링한다. 복잡한 Modification 작업을 하지 않아도 된다는 장점이 있지만 매번 뷰를 날리고 새로운 뷰를 렌더링하는 것은 부담이 클텐데 어떻게 리액트는 성능을 최적화하는 것일까? 리액트는 virtual DOM을 이용하여 DOM 조작을 최소화..

2020. 9. 28. 02:36

프로세스 상태 그림 정리

일괄작업시스템의 경우 생성, 실행, 완료 시분할 시스템 (기본 4가지 상태) 생성, 준비, 실행, 완료 ** 프로세스 5가지 상태 (대기 상태 포함) 실행 중인 프로세스가 입출력을 요구할 경우 프로세스는 요청한 작업이 끝날 때까지 다음 작업을 할 수 없다. 작업의 효율을 높이기 위해 입출력을 요청한 프로세스를 대기 상태로 옮기고 다른 프로세스를 실행 상태로 놓는다. (문맥 교환 이루어진다)

2020. 9. 28. 01:53

프로세스

* 쉽게 배우는 운영체제를 공부하면서 정리했습니다 프로세스 개요 프로세스는 작업의 단위이다. 여기서 작업은 뒤에서 나오지만 크기에 따라서 여러가지로 나뉘는데, job > task (프로세스) > operation (스레드) 순이다. 프로그램 vs 프로세스 프로그램은 하드디스크 같은 저장장치에 있다가 마우스로 더블클릭하면 실행된다. 폰노이만 구조에서 프로그램이 실행된다 = 해당 코드가 메모리에 올라와서 실행된다 프로그램은 작성해 놓은 작업 절차(정적인 상태)이고 프로세스는 그것을 메모리에 올려 실제로 실행한 것이다.(동적인 상태) 일괄 작업 시스템 한 번에 하나의 작업을 처리한다 하나의 작업이 끝나야 다른 작업을 할 수 있다 들어오는 순서대로 처리하고 나머지 작업은 큐에서 대기한다 시분할 방식 cpu가 1..

[코딜리티] passing cars (python)

O(n) 시간에 풀어야하는 문제이다 0 일 경우 현재 차의 개수 cur을 +1해주며 1을 만날 경우 현재까지 있던 왼쪽에 있던 차의 개수를 전체 sum에다 더하면 된다. 왼쪽에 있는 0의 개수가 1이 만나게 될 차의 개수이기 때문이다. # you can write to stdout for debugging purposes, e.g. # print("this is a debug message") def solution(A): sum=0 cur=0 for i,car in enumerate(A): # print(i,cur) if car==0: cur+=1 else: sum+=cur if sum>1000000000: return -1 else: return sum o(n^2)는 효율성 통과를 못하지만 A[i+1..

[프로그래머스] n진수 게임 (파이썬, 진법변환)

def solution(n, t, m, p): answer = [] T="0123456789ABCDEF" num="0" for i in range(0,m*t+1): temp="" while i: i,j=divmod(i,n) temp=T[j]+temp num=num+temp for i in range(t*m): if i%m==p-1: answer.append(num[i]) return ''.join(answer)