728x90

Algorithm/programmers 4

[프로그래머스] 다리를 지나는 트럭 (자바/java)

이번에도 큐를 이용하는 문제이다. 풀이 문제에서 "다리를 건너는 트럭" 이 부분을 큐로 구현한다. 즉, 문제에서 다리=큐 그러면 다리의 길이(length)는 큐의 크기(queue.size())와 같은 의미가 되는 것 그리고 weight는 임의의 변수 max를 만들어 판별할 수 있게끔 한다. 1. 다리가 비어있으면(큐가 비어있으면), truck_weights 값을 큐에 넣기, max 값에 더해주기 2. 다리가 비어있지 않다면 (1) 다리에 있는 트럭들이 bridge_length 만큼 있으면 다리 맨 앞에 있는 트럭을 빼준다. (2) 다리를 건너는 트럭 무게의 합(max)가 weight 이하면 새로운 트럭을 다리에 들여보내기 (3) 다리에 트럭이 들어갈 수 있지만 무게 제한 때문에 안 돼서 트럭을 못 넣어주..

[프로그래머스] 프린터 (자바/java)

이번에는 큐를 사용하는 문제이다. 개인적으로 코드 길이에 비해 어렵게 느꼈던 문제... 풀이 1. priorities 배열 값들을 내림차순으로 큐에 저장 2. 큐에서 값을 꺼내는데, priorities[location]에 있는 값이 같으면서 index와 location의 값이 같으면 성공 일반적인 큐를 사용해도 되지만 코드의 간결?을 위해 우선순위 큐를 사용해보기로 했다. 그렇게 완성된 코드는 다음과 같다. import java.util.*; class Solution { public int solution(int[] priorities, int location) { int answer = 0; PriorityQueue pq=new PriorityQueue(Collections.reverseOrder()..

[프로그래머스] 기능개발 (자바/java)

이 문제는 스택을 사용하는 문제입니다. 앞에 있는 기능이 완성되기 전까지는 뒤에 있는 기능이 완성되더라도 먼저 배포하지 못하기 때문에 스택을 사용하기로 했습니다. 풀이는 다음과 같습니다. 1. 각 기능이 완성(100%)되기까지 남은 일수를 구하고 이를 스택에 넣습니다. 2. 앞에서부터 배포를 해줍니다. 여기서, 뒤에 있는 기능이 완성되었다면 같이 배포해줍니다. 이 과정을 스택이 빌 때까지 반복합니다. 3. 배열에 옮겨담고 return 해줍니다. 완성된 코드는 다음과 같습니다. import java.util.*; class Solution { public int[] solution(int[] progresses, int[] speeds) { Stack s=new Stack(); ArrayList arr=n..

728x90