목록Programming/JAVA (67)
Information Security Study
package boj; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.EmptyStackException; import java.util.LinkedList; import java.util.Queue; import java.util.Stack; import java.util.StringTokenizer; public class Main { // 요세푸스 문제 큐를 사용해서 다시 풀어보기 public static void main(String[] args) throws IOException, NullPointerException{ // StringBuilde..
자료구조 중 큐를 사용해서 풀 수 있는 문제이다. 맨 윗 카드를 poll()한 뒤 그 다음 카드를 마지막 순서로 변경해 주면 된다. 순서 변경은 두 번째 카드를 poll()해서 변수(tmp)에 저장 후 다시 큐에 offer(tmp)해주면 된다. 입출력 예시다. package boj; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.EmptyStackException; import java.util.LinkedList; import java.util.Queue; import java.util.Stack; import java.util.StringTokenize..
자료구조 중 하나인 큐를 구현하는 문제이다. package boj; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.EmptyStackException; import java.util.LinkedList; import java.util.Queue; import java.util.Stack; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws NumberFormatException, IOException, EmptyStackExcept..
큐를 구현하는 문제이다. 입출력 예제다. package boj; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.EmptyStackException; import java.util.LinkedList; import java.util.Queue; import java.util.Stack; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws NumberFormatException, IOException, EmptyStackExceptio..
입출력 예제다. 이미 입력된 숫자가 다시 입력된 경우 NO를 출력한다. package boj; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.EmptyStackException; import java.util.Stack; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws NumberFormatException, IOException, EmptyStackException{ // StringBuilder를 사용하여 결과를 한 번에 출..
첫 줄에 입력 횟수가 주어진다. 그 다음에는 A와 B로만 이루어진 단어가 한 줄에 하나씩 입력한다. 이 문제는 스택으로 풀 수 있다. A와 B가 교차하기만 하는 단어는 좋은 단어가 아니므로 좋은 단어일 경우에 stack의 size가 0이 되도록 생각해 보면 된다. A와 B가 교차하기만 하는 단어는 A와 B가 계속 번갈아서 입력되므로 stack.peek()이 입력된 문자와 동일하지 않을 것이고 이 경우에 push()를 한다. 교차되지 않는 경우에는 pop()을 하기 때문에 A와 B의 개수가 동일하다면 연산 후의 스택의 사이즈는 0일 것이다. 한 단어가 좋은 단어인지 검사를 한 후에 좋은 단어라면 count를 증가시킨다. import java.io.BufferedReader; import java.io.IO..
입출력 예시다. 괄호가 바로 열고 닫히는 경우 레이저가 발사되며 그렇지 않은 경우에는 쇠막대기가 놓인다. 위 이미지를 자세히 보면 레이저가 발사되기 전의 괄호 갯수만큼 쇠막대기가 분할되는 것을 알 수 있다. 예를 들어 (((()의 경우 짝이 맞는 () 전에 존재하는 (의 갯수가 3개이고 쇠막대기도 마찬가지로 3개가 생성된다. ((()()의 경우 첫 번째 레이저가 발사되는 ()이전의 괄호 갯수는 3개, 두 번째 레이저가 발사되는 ()이전의 괄호 갯수도 3개이므로 총 6개의 쇠막대기가 생긴다. 레이저 발사 후 바로 )가 들어오는 경우에는 쇠막대기가 하나만 생성된다. 이를 코드로 작성하기 위해서는 스택을 사용하는 것이 용이하다. import java.io.BufferedReader; import java.io..
위 예제처럼 괄호의 짝이 맞으면 YES, 아니면 NO를 출력한다. package boj; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Stack; import java.util.StringTokenizer; /* * 괄호 짝맞추기 */ public class Main { public static void main(String[] args) throws IOException{ // StringBuilder를 사용하여 결과를 한 번에 출력하기 위한 객체 생성 StringBuilder sb = new StringBuilder(); // BufferedReade..