Stack/Queue
같은 숫자는 싫어
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
Stack<Integer> st = new Stack<>();
for (int i = 0; i < arr.length; i++) {
if (i == 0) {
st.push(arr[i]);
continue;
}
if (st.peek() == arr[i]) continue;
st.push(arr[i]);
}
int[] answer = new int[st.size()];
for (int i = answer.length -1; i >= 0; i--) {
answer[i] = st.pop();
}
return answer;
}
}
기능 개발
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
Stack<Integer> st = new Stack<>();
for (int i = 0; i < arr.length; i++) {
if (i == 0) {
st.push(arr[i]);
continue;
}
if (st.peek() == arr[i]) continue;
st.push(arr[i]);
}
int[] answer = new int[st.size()];
for (int i = answer.length -1; i >= 0; i--) {
answer[i] = st.pop();
}
return answer;
}
}
// 다른 사람 풀이
import java.util.*;
class Solution {
public int[] solution(int[] progresses, int[] speeds) {
Queue<Integer> q = new LinkedList<>();
List<Integer> answerList = new ArrayList<>();
for (int i = 0; i < speeds.length; i++) {
double remain = (100 - progresses[i]) / (double) speeds[i];
int date = (int) Math.ceil(remain);
if (!q.isEmpty() && q.peek() < date) {
answerList.add(q.size());
q.clear();
}
q.offer(date);
}
answerList.add(q.size());
int[] answer = new int[answerList.size()];
for (int i = 0; i < answer.length; i++) {
answer[i] = answerList.get(i);
}
return answer;
}
}
올바른 괄호
import java.util.*;
class Solution {
boolean solution(String s) {
Stack<Character> st = new Stack<>();
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '(') st.push(s.charAt(i));
else {
if(st.isEmpty()) return false;
st.pop();
}
}
return st.isEmpty();
}
}
프린터
import java.util.*;
import java.util.stream.IntStream;
class Solution {
public int solution(int[] priorities, int location) {
Queue<Integer> q = new LinkedList<>();
for (int i = 0; i < priorities.length; i++) {
q.add(i);
}
int cnt = 0;
// System.out.println("---------------------------");
while (!q.isEmpty()) {
int idx = q.poll().intValue();
if (IntStream.of(priorities).anyMatch(x -> x > priorities[idx])) {
q.add(idx);
}
else {
cnt++;
priorities[idx] = -1;
if (idx == location) return cnt;
}
}
return cnt;
}
}
❌ 다리를 지나는 트럭
// Some code
주식 가격
class Solution {
public int[] solution(int[] prices) {
int[] answer = new int[prices.length];
for (int i = 0; i < prices.length; i++) {
int priod = 0;
if (i == prices.length - 1) {
answer[i] = priod;
break;
}
for (int j = i + 1; j < prices.length; j++) {
if (prices[i] <= prices[j]) priod++;
else {
priod++;
break;
}
}
answer[i] = priod;
}
return answer;
}
}
Last updated