Loading...

[프로그래머스] 피보나치수 (파이썬)

메모이제이션 없이 재귀로 돌렸더니 시간초과 나서 for문으로 처리했다 def solution(n): answer=[0,1] for i in range(2,n+1): answer.append((answer[i-1]+answer[i-2])%1234567) # print(answer) return answer[n] 이런 방법도 있다 def fibonacci(num): a,b = 0,1 for i in range(num): a,b = b,a+b return a

[프로그래머스] 가장 큰 정사각형 찾기 (파이썬, dp)

def solution(board): for i in range(1,len(board)): for j in range(1,len(board[0])): if board[i][j]==1: board[i][j]=min([board[i-1][j-1],board[i][j-1],board[i-1][j]])+1 # 이런식으로 쭉 늘여놓을 수 있는 듯 return max([item for row in board for item in row])**2

[프로그래머스] 행렬의 곱셈 (파이썬)

하나를 행열 위치를 바꾼 행렬로 만들어서 각 행 별로 원소를 곱해서 더해줌 def solution(arr1, arr2): r2=list(map(list,zip(*arr2))) answer = [[sum(a*b) for a,b in zip(row,col) for col in r2] for row in arr1] return answer

[프로그래머스] 프렌즈 4블록 (파이썬)

이미 터트린거 어떻게 지우나 했는데 이런 방법이 있어서 참고했다 똑똑한 사람이 많군 velog.io/@tjdud0123/%ED%94%84%EB%A0%8C%EC%A6%88-4%EB%B8%94%EB%A1%9D-2018-%EC%B9%B4%EC%B9%B4%EC%98%A4-%EA%B3%B5%EC%B1%84-python b=list(map(list,zip(*board)) 이렇게 하면 세로 줄에 해당하는 아이템을 행으로 해서 새로운 배열로 리턴해준다 지워진 만큼 앞에 '_'을 붙여서 남은 것 끼리 오른쪽으로 모아준다 def pop_num(b, m, n): pop_set = set() # n,m 방향 주의 for i in range(1, n): for j in range(1, m): if b[i][j] == b[i -..

[프로그래머스] level3. 베스트앨범 (파이썬, javascript)

1. 파이썬 def solution(genres, plays): answer = [] dic={} for g,p in zip(genres,plays): if g not in dic: dic[g]=p else: dic[g]+=p # 곡 내림차순 정렬 sdic=sorted(dic.items(),key=lambda x:x[1],reverse=True) for s in sdic: temp=[] for i,p in enumerate(plays): if genres[i]==s[0]: temp.append((p,i)) cnt=0 temp=sorted(temp, key=lambda x:(-x[0],x[1])) for t in temp: num,idx=t answer.append(idx) cnt+=1 if cnt==2:..

[프로그래머스] 1차 캐시 (파이썬, javascript)

deque은 remove나 insert함수도 있다 1. 파이썬 def solution(cacheSize, cities): answer = 0 cache=[] for c in cities: c=c.lower() if c not in cache: if cache and len(cache)>=cacheSize: cache.pop(0) if cacheSize>0: cache.append(c) answer+=5 else: cache.remove(c) cache.append(c) answer+=1 return answer 2. 자바스크립트 function solution(cacheSize, cities) { const cache=[]; var answer = 0; for(let i=0;icacheSize)cache..

lesson 2. cyclicrotation

결과 위치는 (현재 인덱스 + 이동한 횟수) % 배열 길이로 구하고 배열에 (이동된 결과 위치, 현재 값)을 집어넣은 후 정렬하여 인덱스 순서대로 값이 나오도록 구현했다 # you can write to stdout for debugging purposes, e.g. # print("this is a debug message") def solution(A, K): temp=[] for i,a in enumerate(A): temp.append(((i+K)%len(A),a)) temp.sort() ans=[] for i,j in temp: ans.append(j) return ans 이렇게 슬라이싱으로 푸는 방법도 있다 def solution(A, K): # write your code in Python ..

[프로그래머스] 땅따먹기 (파이썬, javascript )

dp 문제 열이 연속으로 같지 않게 최대값 구하는 문제 1. 파이썬 def solution(land): for i in range(1,len(land)): for j in range(4): land[i][j]+=max(land[i-1][:j]+land[i-1][j+1:]) return max(land[len(land)-1]) 2. javascript function solution(land) { var answer = 0; let n=land.length; let dp=Array(n).fill(0).map(()=>Array(4).fill(0)); for(let j=0;j

브라우저 렌더링 과정

브라우저 주소창에 주소를 입력한다 (ex. www.naver.com) DNS가 해당 서버가 어디있는 지 찾아 연결해준다. (https가 있다면 https방식으로 통신한다) 서버에서 index.html 파일을 클라이언트로 전송한다 렌더링 엔진의 html 파서와 css 파서가 각각 html,css 파일을 파싱하여 DOM, CSSOM 트리로 변환한다. html파서가 중간에 link태그를 만나면 css를 파싱하며 css 파싱이 끝나면 다시 html파싱을 하여 DOM 트리를 만든다. (css 정보 없음) DOM 트리와 CSSOM트리를 합쳐 render tree를 만든다. (여기서는 스타일 정보가 들어간다) html 파서는 script 태그를 만나면 javascript 엔진으로 제어권한을 넘기고 자바스크립트를 파싱..

[프로그래머스] 영어 끝말잇기 (파이썬)

dictionary 사용 def solution(n, words): answer = [] dic={} prev=words[0] dic[prev]=0 for i,w in enumerate(words): if i==0: continue if w[0]!=prev[-1] or w in dic: return [i%n+1,i//n+1] else: prev=w dic[w]=i return [0,0]