Loading...

[프로그래머스] 뉴스 클러스터링 (파이썬, 문자열)

def solution(str1, str2): a=[str1[i-1:i+1].lower() for i in range(1,len(str1)) if str1[i-1:i+1].isalpha()] b=[str2[i-1:i+1].lower() for i in range(1,len(str2)) if str2[i-1:i+1].isalpha()] inter=[] union=[] for i,x in enumerate(a): if x in b: inter.append(x) union.append(x) b.remove(x) elif x not in b: union.append(x) for x in b: union.append(x) if len(inter)==len(union)==0: return 65536 return i..

[프로그래머스] 튜플 (문자열, 정렬, python, javascript)

1. python 풀이 def solution(s): answer = [] temp=[] for i in s[2:-2].split('},{'): temp.append(i.split(',')) temp.sort(key=len) for t in temp: for item in t: if int(item) not in answer: answer.append(int(item)) return answer 2. javascript 풀이 function solution(s) { var answer = []; s=s.split("").map(ch=>{ if(ch==="{" || ch==="}"){ return ""; } return ch; }).join("").split(","); const dict={}; for(l..

[React] setState 함수형으로 사용하기

이 글은 아래 블로그를 참조해서 공부하면서 정리한 글입니다. 자세한 정보는 아래 글 참조 medium.com/@saturnuss/setstate-%EB%A5%BC-%ED%95%A8%EC%88%98%ED%98%95%EC%9C%BC%EB%A1%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-763402cbc3e5 setState 를 함수형으로 사용하기 리액트를 사용할 때 상태관리를 어떻게 해야할까? 그런데 상태 관리를 고민하기 이전에 무엇이 상태(state)고 어떤 것이 프로퍼티(props)가 되어야하는 것일까? 그리고 setState 어떻게 동작하는 것일 medium.com 리액트 상태를 업데이트 하기 위해서는 setState()메소드 호출한다 setState()는 업데이트 할 부분..

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

메모이제이션 없이 재귀로 돌렸더니 시간초과 나서 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 ..