[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; } ..
[BAEKJOON] 2798.블랙잭
·
코딩테스트/Java
0. 들어가기에 앞서: 브루트 포스란? 본 문제는 브루트 포스(brute force)라는 분류에 속해있다. 브루트 포스는 무차별 대입, 키 전수조사 등으로 불리며 조합 가능한 모든 문자열을 하나씩 대입함으로써 암호를 해독하는 방법을 의미한다. 학창 시절에 사물함에 비밀번호 기능이 있는 자물쇠를 사용했던 경험이 있다면, 브루트 포스가 어떤 의미인지 대략적으로 이해할 수 있을 것이다. 3~4자리의 숫자 암호를 해독하는 경우는 자원이 클 필요는 없으나 8자리 등으로 늘어난다면, 해당 암호를 해독하는 데 필요한 자원의 규모는 기하급수적으로 늘어난다. 따라서 브루트 포스를 적용하는 경우, 맨 땅에 헤딩하는 것이 아니라 특정 규칙을 찾아서 대입에 우선순위를 두는 작업이 선행되어야 한다고 생각한다. 1. 문제 1.1..