Loading...

[프로그래머스] 두 개 뽑아서 더하기 (python, javascript)

1. 파이썬 풀이 중복없이 저장하기 위해 dictionary를 썼다 def solution(numbers): dict={} for i,n in enumerate(numbers): for j,m in enumerate(numbers): if i==j: continue dict[n+m]=n+m return sorted(dict.values()) sorted는 새로운 배열을 반환한다 2. javascript 풀이 function solution(numbers) { var answer = []; for(let i=0;i

[프로그래머스] 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)

[프로그래머스] 수식 최대화 (파이썬, 순열, javascript)

1. javascript function solution(expression) { const prior=[['+','-','*'],['+','*','-'],['*','-','+'],['*','+','-'], ['-','+','*'],['-','*','+']]; // 순열로 돌려도 되고 최대 6가지 const nums=[]; const opers=[]; let num=''; expression.split("").map((x)=>{ if(x>='0' && x

[프로그래머스] 등굣길 (dp,파이썬)

못지나가는 길 puddles의 i,j가 바뀌어있음을 주의 def solution(m, n, puddles): dp=[[0]*(m+1) for _ in range(n+1)] dp[1][1]=1 for i in range(1,n+1): for j in range(1,m+1): if i==j==1: continue if [j,i] not in puddles: dp[i][j]=(dp[i-1][j]+dp[i][j-1])%1000000007 return dp[n][m]

[프로그래머스] 거스름돈 (파이썬, javascript)

dp인건 알겠는데 어디서 계산이 틀린 부분이 있는지 한참을 안되다가 다시 해보니까 3분만에 풀림 이것이 인생 1. 거스름돈 1,2,5원 중 1원을 낼 수 있는 것 다 더해주고 그다음 2원으로 계산되는 것 다 내준다. 그 다음 5원 순으로 더한다 배열 말고 그냥 dict을 사용했고 from collections import defaultdict def solution(n, money): dp=defaultdict(int) dp[0]=1 for m in money: for i in range(m,n+1): dp[i]+=dp[i-m]%1000000007 return dp[n] 2. 자바스크립트 function solution(n, money) { var answer = 0; let dp=new Array(n+..

[프로그래머스] 2xn 타일링 (파이썬, dp)

dp[n] 번째 타일을 만드는 경우의 수는 1. dp[n-2] 번째 타일들에 세로 방향 타일 하나를 붙이는 경우 2. dp[n-1]번째 타일들에 가로 방향 2개의 타일을 붙이는 경우 2 가지를 합친 방법이다 def solution(n): a,b=1,2 for i in range(3,n+1): a,b=b,(a+b)%1000000007 return b

[프로그래머스] 정수 삼각형 (dp)

가끔 나오는 유형이다. 자체 배열을 지금까지의 합을 담은 dp배열 처럼 쓰는 형식의 dp문제 def solution(t): for i in range(1,len(t)): for j in range(0,i+1): if j==0: t[i][j]+=t[i-1][0] elif j==i: t[i][j]+=t[i-1][i-1] else: t[i][j]=max(t[i][j]+t[i-1][j-1],t[i][j]+t[i-1][j]) return max(t[len(t)-1])

[프로그래머스] 가장 긴 펠린드롬 (파이썬, javascript)

* 문자열 뒤집기 [::-1] 또는 ''.join(reversed(s)) def solution(s): answer = 0 for i in range(1,len(s)+1): for j in range(0,i): if s[j:i]==s[j:i][::-1]: if len(s[j:i])>answer: answer=len(s[j:i]) return answer 2. javascript 제일 긴 문자열부터 모든 위치에 있을 수 있는 경우의 수를 검사한다. function solution(s) { for(let i=s.length;i>=1;i--){ let flag=false; for(let j=0;j

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

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..