Loading...

[백준] 1138번 한 줄로 서기 (java, 구현)

www.acmicpc.net/problem/1138 1138번: 한 줄로 서기 첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다 www.acmicpc.net 자신의 번호가 들어갈 수 있는 배열을 하나 만든다(0 초기화) 그리디 탐색으로 보고있는 자리가 비워져있다면 나보다 큰 사람이 들어갈 곳으로 판단해서 cnt를 1감소시킨다. cnt가 0이라 나보다 큰 애는 없어도 자리가 비워져있지 않다면 나보다 작은 친구가 들어간 곳이다. 다음 공간을 본다. cnt도 0이고 현재 공간이 0이면 내가 들어갈 자리이다. import java.util.Scanner; publi..

[프로그래머스] 단속 카메라 (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, 우선순위큐, 그리디)

첫 작업은 도착 시간이 빠른 순으로, 그 다음부터는 이미 도착한 것들 중에서 작업 시간이 짧은 것을 큐에 넣어서 진행한다. (매번 재정렬을 해준다) 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..

[정올] 1828. 냉장고 (java, 그리디)

www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1101&sca=99&sfl=wr_hit&stx=1828 JUNGOL www.jungol.co.kr 아직도 잘 이해가 안됨 냉장고의 최고 기온 보다 화학물질의 최저 기온이 높을 때 냉장고 최고 기온을 갱신해준다. 온도 범위가 겹치는 부분이 있으면 그 사이의 온도중 특정 온도로 유지하면 둘 다 산다. 하지만 겹치지 않는 경우 냉장고 최고 기온보다 화학물질의 최저 기온 기준이 높을 때는 서로 겹치는 온도 범위가 없으 므로 새로운 냉장고가 필요하다. import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class Mai..

[백준] 1931번 회의실 배정 (java, 그리디)

www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 회의실 끝나는 시간을 첫 번째 기준으로, 끝나는 시간이 같다면 시작시간 기준으로 오름차순 정렬한다. import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Scanner; public class Main { static class MeetingRoom implements Comparable{ int start,end; public MeetingRoom( int start, int end) { super(); this...

프로그래머스 단속카메라 (그리디, 파이썬)

내림차순으로 정렬하고 가장 위치가 큰 애부터 passed배열에 넣고 단속카메라에 걸리는 애들을 모두 passed에 넣으며 현재 존재하는 카메라를 만나지 못하는 애들의 진입점을 새로운 카메라 위치로 넣어준다 포인트 : for ~ else 문법, set 문법 def solution(routes): answer = 0 routes=sorted(routes,reverse=True) print(routes) camera=[routes[0][0]] passed=[0] while len(passed)!=len(routes): for i,r in enumerate(routes): if i in passed: continue for c in camera: if r[0]