[백준] NO.1966 : 프린터 큐
·
코딩테스트/Java
https://www.acmicpc.net/problem/1966 본 글에서는 백준 1966번 프린터 큐 문제의 풀이를 설명하며, 문항 정보는 상단의 백준 링크를 통해 확인할 수 있다.  1. 문제 분석이 문제의 핵심은 문서의 중요도에 따라 큐의 원소를 재배치하는 것이다. 이를 해결하기 위해 본인은 다음과 같은 두 가지 자료구조를 사용하였다:프린트할 순서를 저장하는 큐문서의 중요도를 저장하는 우선순위 큐이 두 가지 큐를 통해 문서의 중요도에 따라 적절한 순서로 문서가 프린트되도록 구현하였다. 2. 코드 설명import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStrea..
[BaekJoon][문자열][Java] 2908: 상수
·
코딩테스트/Java
상수는 수를 다른 사람과 다르게 거꾸로 읽는다. 예를 들어, 734와 893을 칠판에 적었다면, 상수는 이 수를 437과 398로 읽는다. 따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 것이다.두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성하시오. 첫째 줄에 상근이가 칠판에 적은 두 수 A와 B가 주어진다. 두 수는 같지 않은 세 자리 수이며, 0이 포함되어 있지 않다. 첫째 줄에 상수의 대답을 출력한다. %,*연산을 통해 숫자를 뒤집어서 재배열하기 1. 상근이가 칠판에 적은 수 A, B 입력 받기  2. 각각의 수를 거꾸로 배열하기  3. 거꾸로 배열한 수의 크기를 비교하여 큰 수 출력하기 package BOJ.string;import java.io.BufferedReader..
[BaekJoon][자료 구조][Queue][Java] 큐 구현하기
·
코딩테스트/Java
Queue는 컴퓨터의 기본적인 자료 구조의 한 가지로, 먼저 집어 넣은 데이터가 먼저 나오는 FIFO (First In First Out)구조로 저장하는 형식을 말한다.주어진 N(2 2 // 테스트 케이스 수5 // 데이터 크기1 2 3 4 55 4 2 3 1 #1 1 2 3 4 5#2 5 4 2 3 1  front와 back으로 구성된 큐에 값을 집어넣는 enqueue를 구현할 때배열 큐는 고정된 크기이기 때문에 단순히 queue[back++] = value 를 해버리면배열의 뒤쪽에는 더 이상 요소를 추가할 공간이 없으나 배열의 앞쪽에는 빈 공간이 남아있게 됨. 따라서 순환 큐 개념을 사용해야 함. 순환 큐는 모듈로 연산을 사용해 구현 가능.다만, 순환 큐는 모든 인덱스를 다 사용하지는 않고 back ..
[BaekJoon][자료 구조][Stack][Java] 2563: 색종이
·
코딩테스트/Java
1. 핵심 아이디어 1X1의 정사각형으로 이루어진 100X100 흰색 도화지를 boolean형 2차원 배열로 가정할 때, 검은 영역일 경우 true 처리 2. 풀이package BOJ.dataStructure.stack;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class BOJ2563 { // 도화지 private static boolean[][] arr; // 색종이 개수 private static int n; // 검은 영역의 넓이 private static int total; /** * 검은 영역의 갯수를 ..
[BaekJoon][자료 구조][Stack][Java] 10799 : 쇠막대기
·
코딩테스트/Java
1. 주요 아이디어 닫는 괄호가 나올 시 직전 괄호가 여는 것인지, 닫는 것인지 확인하여 막대기 조각의 갯수를 구하자 1.1. 여는 괄호가 나올 시       push() 1.2. 닫는 괄호가 나올 시        pop()        단, 이때 직전 괄호가1) 여는 괄호라면 이는 곧 레이저를 지나가는 막대기의 수(스택의 사이즈)만큼의 조각이 생기는                                         것 이기에 result + 스택의 사이즈.2) 닫는 괄호라면 한 개의 막대기가 끝나는 지점이기에 result + 1.2. 풀이 package BOJ.dataStructure.stack;import java.io.BufferedReader;import java.io.IOException;..
[BaekJoon][자료 구조][Stack][Java] 1935 : 후위 표기식2
·
코딩테스트/Java
인간이 사용하는 연산식은 피연산자 사이에 연산자가 위치하는 "중위 표기식"이다. 예컨대, 1 + 1 = 2 와 같다. 그러나 컴퓨터는 중위 표기식을 맞이하면, 1 + 에서 무엇을 더해야할 지 알 수 없기 때문에, 연산자가 피연산자들의 뒤에 있는, "후위 표기식"을 통해서 연산을 실시한다.  따라서 컴퓨터가 연산을 하기 위해서는 1. 중위 표기식을 입력 받고 2. 중위 표기식을 후위 표기식으로 변환한 뒤 3. 연산 결과를 출력하는 방식의 프로세스를 거치게 된다. 본 문제는 상기한 프로세스를 구현하는 문제로, 연산자가 나올 때 비로소 이전에 저장한 피연산자들을 꺼내 연산을 해야하기 때문에 Stack을 사용한다.package BOJ.dataStructure.stack;import java.io.Buffered..
[BaekJoon][자료 구조][Stack][Java] 10773 : 제로
·
코딩테스트/Java
package BOJ.dataStructure.stack;import java.io.IOException;import java.util.Scanner;import java.util.Stack;public class BOJ10773 { public static void main(String[] args) throws NumberFormatException, IOException { Scanner sc = new Scanner(System.in); // 정수 k int k = sc.nextInt(); // stack 생성 // 0이 나올 시 가장 최근에 쓴 수를 지워야 한다는 점에서 스택 사용 Stack stack = new Stack(); // 최종적으로 적어 낸 수를 담기..
[BaekJoon][자료구조][Java] Stack 구현하기
·
코딩테스트/Java
Stack은 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(LIFO - Last In First Out)로 데이터를 저장하는 형식을 말한다. 주어진 N(2 입력251 2 3 4 55 4 2 3 1 출력#1 5 4 3 2 1#2 1 3 2 4 5 package BOJ;import java.io.*;import java.util.StringTokenizer;public class MyStack{ private static int[] stack; private static int pointer; // 스택 초기화 public static void init(int size){ stack = new int[size]; pointer = 0; } ..