스택
-
이번 문제는 우선순위 큐를 이용하는 문제이다. Comparable과 Comparator라는 인터페이스가 있다. 이 두 개의 인터페이스는 두 값을 비교해 어떠한 기준으로 정렬을 시키는 인터페이스이다. 그래서 이 인터페이스를 이용하여 정렬을 한 후 큐에서 poll() 메소드를 사용하면 된다. 필자는 Comparator라는 인터페이스를 사용했는데 compare라는 메소드를 오버라이딩하여 사용하면 된다. 우리가 생각해야할 기준은 두 가지이다. 먼저 절댓값이 서로 다를 때. 절댓값이 서로 다르면 어느 하나의 절댓값이 더 크다는 소리다. 절댓값이 더 큰 수가 뒤로 배치되어야 한다. 절댓값이 같으면 원래의 수가 더 작은 것이 앞에와야한다. 이 두가지를 생각하고 로직을 짜면 된다. 아래 코드를 보자. import ja..
[백준] 스택, 큐 - 11286_절댓값 힙 Java[자바]이번 문제는 우선순위 큐를 이용하는 문제이다. Comparable과 Comparator라는 인터페이스가 있다. 이 두 개의 인터페이스는 두 값을 비교해 어떠한 기준으로 정렬을 시키는 인터페이스이다. 그래서 이 인터페이스를 이용하여 정렬을 한 후 큐에서 poll() 메소드를 사용하면 된다. 필자는 Comparator라는 인터페이스를 사용했는데 compare라는 메소드를 오버라이딩하여 사용하면 된다. 우리가 생각해야할 기준은 두 가지이다. 먼저 절댓값이 서로 다를 때. 절댓값이 서로 다르면 어느 하나의 절댓값이 더 크다는 소리다. 절댓값이 더 큰 수가 뒤로 배치되어야 한다. 절댓값이 같으면 원래의 수가 더 작은 것이 앞에와야한다. 이 두가지를 생각하고 로직을 짜면 된다. 아래 코드를 보자. import ja..
2024.02.07 -
이번 문제는 큐의 자료구조를 파악하는 문제이다. 큐는 First In First Out으로 처음 넣는 값을 처음으로 뺄 수 있는 자료구조이다. 그래서 이번 문제는 어렵지 않다고 볼 수 있다. 주어진 숫자만큼 큐에 넣어준다. 예를 들어 6이면 1 2 3 4 5 6 순서로 큐에 넣어준다. 여기서 1을 poll() 메소드로 꺼내오고 2를 6뒤에 붙이려면 que.add(que.poll())의 형식으로 붙일 수 있다. 이 과정을 큐 안에 데이터가 하나만 남을 때까지 반복하면 쉽게 답을 구할 수 있다. 아래 코드를 보자. import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOExc..
[백준] 스택, 큐 - 216_카드 2 Java[자바]이번 문제는 큐의 자료구조를 파악하는 문제이다. 큐는 First In First Out으로 처음 넣는 값을 처음으로 뺄 수 있는 자료구조이다. 그래서 이번 문제는 어렵지 않다고 볼 수 있다. 주어진 숫자만큼 큐에 넣어준다. 예를 들어 6이면 1 2 3 4 5 6 순서로 큐에 넣어준다. 여기서 1을 poll() 메소드로 꺼내오고 2를 6뒤에 붙이려면 que.add(que.poll())의 형식으로 붙일 수 있다. 이 과정을 큐 안에 데이터가 하나만 남을 때까지 반복하면 쉽게 답을 구할 수 있다. 아래 코드를 보자. import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOExc..
2024.02.07 -
이번 문제는 스택을 사용하는 문제이다. 스택에 인덱스를 넣어주며 활용을 하면 되는데 예시를 들어서 설명을 하면 편할 것 같다. 3 2 5 8 이라는 배열이 있다고 하자. 스택에 먼저 첫 인덱스인 0을 넣어준다. stack.push(0) 그 후 반복문을 돌며 해당 인덱스에 해당하는 값보다 더 큰 값을 찾으면 된다. arr[stack.peek()] == arr[0] == 3 이고 저 값보다 더 큰 값을 가지는 것은 arr[1] == 5이다. while(arr[stack.peek()] < arr[i]) { result[stack.pop()] = arr[i] } 로 표현할 수 있는데 배열을 하나하나 조사하며 해당 값보다 더 큰 값이 나오면 해당 값까지의 오큰수를 모두 arr[i]로 설정하는 것이다. 아래 자세한..
[백준] 스택, 큐 - 17298_오큰수 Java[자바]이번 문제는 스택을 사용하는 문제이다. 스택에 인덱스를 넣어주며 활용을 하면 되는데 예시를 들어서 설명을 하면 편할 것 같다. 3 2 5 8 이라는 배열이 있다고 하자. 스택에 먼저 첫 인덱스인 0을 넣어준다. stack.push(0) 그 후 반복문을 돌며 해당 인덱스에 해당하는 값보다 더 큰 값을 찾으면 된다. arr[stack.peek()] == arr[0] == 3 이고 저 값보다 더 큰 값을 가지는 것은 arr[1] == 5이다. while(arr[stack.peek()] < arr[i]) { result[stack.pop()] = arr[i] } 로 표현할 수 있는데 배열을 하나하나 조사하며 해당 값보다 더 큰 값이 나오면 해당 값까지의 오큰수를 모두 arr[i]로 설정하는 것이다. 아래 자세한..
2024.02.07 -
이번 문제는 스택이 어떤 자료구조인지를 파악하는 문제였다. 스택은 Last in, First out으로 제일 먼저 넣은 값이 제일 마지막에 나오는 자료구조이다. 그래서 입력된 값을 기준으로 1부터 순차적으로 stack에 넣은 뒤 입력된 값이 stack에 들어가는 값보다 작으면 그 때 stack에서 pop() 메소드를 사용해 배열을 완성시켜 간다. 그리고 입력되는 값이 stack의 젤 마지막에 들어간 값보다 작으면 NO를 반환하고 그렇지 않으면 pop() 메소드를 사용해 배열을 마저 완성시키면 된다. 아래 코드를 참고하자. import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws..
[백준] 스택, 큐 - 1874_스택 수열 Java[자바]이번 문제는 스택이 어떤 자료구조인지를 파악하는 문제였다. 스택은 Last in, First out으로 제일 먼저 넣은 값이 제일 마지막에 나오는 자료구조이다. 그래서 입력된 값을 기준으로 1부터 순차적으로 stack에 넣은 뒤 입력된 값이 stack에 들어가는 값보다 작으면 그 때 stack에서 pop() 메소드를 사용해 배열을 완성시켜 간다. 그리고 입력되는 값이 stack의 젤 마지막에 들어간 값보다 작으면 NO를 반환하고 그렇지 않으면 pop() 메소드를 사용해 배열을 마저 완성시키면 된다. 아래 코드를 참고하자. import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws..
2024.02.07