Loading...

[프로그래머스] 단속 카메라 (javascript)

1. 시작점을 기준으로 오름차순 정렬한다. 기준점은 시작점의 끝나는 지점이다. (end) 2. 만약 다음 배열의 시작점이 기준점(이전 지점)보다 먼저라면 범위가 겹치는 지점이다. 끝나는 점이 더 작은 걸로 end를 갱신한다. 3. 만약 다음 지점의 시작점과 기준점보다 크다면 범위가 겹치치 않는다. 현재의 end지점에 카메라를 설치하고 end를 새로운 범위의 끝점으로 갱신해라. 4. 반복 function solution(routes) { var answer = 1; routes.sort((a,b)=>a[0]-b[0]); let end=routes[0][1]; for(let i=1;i

[프로그래머스] 폰켓몬 (javascript)

만약 중복되지 않은 수가 n/2개와 같거나 크면 최대 개수는 n/2이다. {2,2,3,4,5,6} => {2,3,4,5,6} => 5개 중에 아무거나 3개 뽑으면 된다. 만약 중복되지 않은 수가 n/2보다 작다면 아무리 많은 경우가 있어도 최대 중복되지 않은 개수이다. {2,2,2,2,3,3,3,3} => {2,3}

[프로그래머스] 순위 (javascript, 플로이드와샬, level3)

이런 서로 간의 순위를 알아내는 문제를 만나면 못 풀었었는데 플로이드 와샬 알고리즘이라고 한다. (음... 잊었군) 중간 노드 개념이 어려웠었는데 이렇게 a가 mid를 이기고 mid가 b를 이기면 a가 b를 이김 이런식으로 보니까 이해했다. 백준 순위 문제와 같다니까 그거는 자바로 풀어봐야겠다. function solution(n, results) { var answer = 0; // 1부터 시작 주의 const graph=Array.from({length:n+1},()=>Array(n+1).fill(false)); results.map((item)=>{ const [win,lose]=item; graph[win][lose]=1; //이긴 경우 1 graph[lose][win]=-1; //졌을 경우 -1..

[프로그래머스] 이중 우선순위 큐 (javascript)

작은 순으로 정렬하고 마지막 숫자를 빼면 가장 큰 수가 빠진다. 큰 순으로 정렬하고 마지막 숫자를 빼면 가장 작은 수가 빠진다. function solution(operations) { const q=[]; for(let i=0;ia-b); q.pop(); }else{ q.sort((a,b)=>b-a); q.pop(); } } } q.sort((a,b)=>a-b); return q.length===0?[0,0]:[+q[q.length-1],+q[0]]; }

[프로그래머스] 디스크 컨트롤러 (javascript, 우선순위큐, 그리디)

첫 작업은 도착 시간이 빠른 순으로, 그 다음부터는 이미 도착한 것들 중에서 작업 시간이 짧은 것을 큐에 넣어서 진행한다. (매번 재정렬을 해준다) function solution(jobs) { var answer = 0; jobs.sort((a,b)=>a[0]-b[0]);// 첫 작업은 가장 먼저오는 걸로 const pq=[];//우선 순위 큐 (시작이 가능한 일들이 들어가며 작업시간 오름차순정렬됨) let i=0, time=0; while(i

[프로그래머스] 섬 연결하기 (javascript)

최소 가중치를 먼저 연결하는 문제이다. 크루스칼 알고리즘으로 푸는 사람들도 많다. 나는 다른 방법으로 푸는 걸 참고해서 풀었다. 순환이 생기지 않기 위해 한 쪽이 방문하면 다른 한쪽은 방문을 안한 경우만 탐사한다. function solution(n, costs) { var answer = 0; //비용이 작도록 정렬 costs.sort((a,b)=>a[2]-b[2]); const vis=new Array(n).fill(false); const bridge=new Array(costs.length).fill(false); //다리 연결의 시작 vis[costs[0][0]]=true; vis[costs[0][1]]=true; answer+=costs[0][2]; let cnt=1; //연결 된 갯수 whi..

[프로그래머스] 단어 변환 (javascript)

단순 조합 문제~~ function solution(begin, target, words) { var answer = 0; let vis=new Array(words.length).fill(false); function dfs(cur,target,cnt){ if(cur===target){ if(answer===0 || cnt

[프로그래머스] 후보키 (javascript)

* 2021-04-13 다시 푼 풀이 function solution(relation) { var answer = 0; let rlen=relation.length; let clen=relation[0].length; const subset=[]; const set=new Set();//인덱스 조합 function comb(cnt,max,start){ if(cnt===max){ // 최소성 확인 (인덱스 중복 검사) let minimum=true; let sarr=Array.from(set); for(let i=0;i

[프로그래머스] 네트워크 (javascript)

bfs로 했지만 연결되는 곳까지 쭉 들어가는 것이 dfs에 가까운 문제인 것 같다. function solution(n, computers) { var answer = 0; let vis=Array(n).fill(0); for(let i=0;i0){ let cur=q.shift(); for(let j=0;j

[프로그래머스] jadenCase 문자열 만들기 (javascript, java)

1. javascript function solution(s) { return s.split(" ").map(v=>v.substr(0,1).toUpperCase()+v.substring(1).toLowerCase()).join(" "); } 2. java class Solution { public String solution(String s) { String answer=""; String sarr[]=s.toLowerCase().split(""); boolean first=true; for (int i = 0; i < sarr.length; i++) { if(first) { answer+=sarr[i].toUpperCase(); }else answer+=sarr[i]; if(sarr[i].equals(..