Loading...

[프로그래머스] 로또의 최고 순위와 최저 순위 (javascript)

이미 맞춘 번호들 개수를 세줌 (최저) 0인 부분을 모두 더해줌 (최대) function solution(lottos, win_nums) { var answer = []; let cnt=lottos.length; //없는 번호만 lottos=lottos.filter(lotto=>win_nums.indexOf(lotto)===-1); cnt-=lottos.length;//맞춘 개수, 최저 맞춘 개수 let min=cnt; let max=cnt+lottos.reduce((acc,cur)=>{ if(cur===0)acc+=1; return acc; },0); // console.log(min,max) function rank(x){ if(x===6)return 1; else if(x===5)return 2; ..

[프로그래머스] 행렬 테두리 회전하기 (javascript)

function solution(rows, columns, queries) { var answer = []; const map=Array(rows).fill(0).map((_,i)=>Array(columns).fill(0).map((_,j)=>i*columns+j+1)); for(let i=0;i=x;j--){ next=map[yy][j]; map[yy][j]=cur; cur=next; if(minimum>cur)minimum=cur; } for(let i=yy-1;i>=y;i--){ next=map[i][x]; map[i][x]=cur; cur=next; if(minimum>cur)minimum=cur; } // console.log(map) answer.push(minimum); }

[프로그래머스] n 개의 최소공배수 (javascript)

최소공배수 초기값을 1로 잡고 배열의 각 수와 새로운 최소공배수를 구한다. function solution(arr) { var answer = 1; for(let i=0;i

[프로그래머스] 배달 (javascript)

function solution(N, road, K) { var answer = 0; const dist={};//양방향 정보 저장 for(let i=0;iArray(N+1).fill(-1));//1에서 갈 수 있는 지점 const pq=[[1,0]]; while(pq.length>0){ pq.sort((a,b)=>a[1]-b[1]);//비용 적은 순 리턴 const [v,cost]=pq.shift(); if(vis[1][v]==-1){//아직 방문 안되었다. 나중에 같은 점 방문하는 경우 항상 비용이 크다 vis[1][v]=cost;//지점 업데이트 for(let k=0;kK)continue;//거리가 k보다 크면 안된다. if(vis[1][next]==-1){//아직 방문 안한 곳이라면 진행 pq.p..

[프로그래머스] 점프와 순간 이동 (Javascript)

0에서 n까지 가는 dp문제이다. 처음에는 재귀로 dp 돌렸는데 거리가 n을 초과하거나 비용이 더 작을 때만 진행시켜도 시간 초과났다. 거리가 2배인 곳으로 순간이동하는 데 비용이 없어 최대한 순간이동 시켜주는 게 좋으므로 2의 배수라는 것을 처리해주기 위해 %연산자를 써서 n에서 시작해서 0 까지 가준다. 2이 배수가 아닐 때에는 순간이동해서 온게 아니므로 -1로 짝수로 이동해준다. function solution(n) { var ans = 0; while(n>0){ if(n%2==0){ n/=2; }else{ n-=1; ans+=1; } } return ans; }

[프로그래머스] 방문 길이 (javascript)

변을 기준으로 하는 bfs문제는 처음 풀었다. 방문 기준을 어떻게 해야할지 고민했는데 시작점과 끝점이 연결된 변을 방문 표시하기 위해서 (y,x,yy,xx)를 하나의 쌍으로 방문 배열에 넣고 같은 것이 있는지 찾았다. 만약 vis배열에 있다면 방문했던 곳이므로 answer를 증가시켜주지 않는다. function solution(dirs) { var answer = 0; let xpos=[0,0,1,-1];//DURL let ypos=[1,-1,0,0]; const dict={ 'D':0, 'U':1, 'R':2, 'L':3 }; let vis=[]; let y=5 let x=5; for(let i=0;i

[프로그래머스] 가장 먼 노드 (javascript, bfs)

연결리스트를 만들어준 다음 bfs를 돌면서 각 단계의 큐의 개수로 answer를 업데이트해줬다. (각 단계의 노드 개수) function solution(n, edge) { const list={}; for(let i=0;i

[프로그래머스] 더 맵게 (java, heap)

프로그래머스에서 java를 쓰니 매우 어색하다 네이버 코테 대비로 연습 중 ㅠ javascript 쓸 것 같지만 문자열 처리 나오면 javascript로 해야지 -- 풀이 우선순위 큐에 모든 음식을 넣는다. 음식을 모두 섞는데 만약 가장 작은 수가 K 이상이면 조건을 만족하므로 break 아니면 섞는다. 만약 음식이 1개가 남으면 섞지 못하므로 break해주고 마지막 1개 음식이 K를 넘는지 확인한다. 아니면 최종까지 불가능한 것이므로 -1을 리턴해준다. import java.util.*; class Solution { public int solution(int[] s, int K) { int answer = 0; PriorityQueue pq=new PriorityQueue(); for(int i=0;..

[프로그래머스] 파일명 정렬 (javascript)

javascript sort가 제자리 정렬이 아니어서 제자리 정렬을 하기 위해서 index정보를 저장한다음 정렬 조건에 추가해야된다는 것을 알게 되었다 정규표현식없이 for문을 돌면서 heade, number, tail을 분리했는데 계속 모든 예제가 통과되지가 않아서 일단 정규표현식으로 해봤다. 지쳐서 내일 다시 구현으로 분리해봐야겠다. function solution(files) { var answer = []; let newFiles=[]; for(let k=0;k{ let sa=a[1].toLowerCase(); let sb=b[1].toLowerCase(); if(sa===sb){ let na=Number(a[2]); let nb=Number(b[2]); if(na>nb)return 1; else..

[프로그래머스] 여행경로 (javascript, dfs)

function solution(tickets) { tickets.sort(); // 글자순 정렬 let vis=Array(tickets.length).fill(false); var answer = []; function dfs(cur,cnt,path){ if(cnt===tickets.length && answer.length===0){ //정렬했으므로 처음오는 경우의 수가 답 answer=path; return; } for(let i=0;i