본문 바로가기

전체 글1268

[백준] 9012 괄호 - Data Structure / Java • 문제 링크 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net • 풀이 과정 문제에 제시된 조건에 의해 올바른 괄호 문자열이 되기 위해선 여는 괄호 '(' 가 존재 시 반드시 이에 대응하는 닫는 괄호 ')' 가 존재하여야 한다. 기본적으로 올바른 괄호는 여는 괄호에서 시작되고 입력받은 문자가 여는 괄호일 시 스택에 순차적으로 push(), 닫는 괄호일 시 스택에 쌓여있는 여는 괄호 하나를 pop() 하여 해당 괄호가 열고 닫는 괄호 쌍으로써 존재하는 지 검사한다. 모든 괄호를 검.. 2022. 6. 13.
[백준] 10866 덱 - Data Structure / Java • 문제 링크 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net • 풀이 과정 Deque(양방향 Queue) 자료구조에 관련된 기본적인 동작들을 구현하는 문제. 이전에 풀이한 10828, 10845 문제 구현방식에서 switch case 조건문으로 구현하였다. 덱은 양방향에서 데이터를 처리할 수 있으므로 그와 관련된 명령어의 정확한 의미를 파악하여 구현해야한다. 덱의 앞, 뒤에 데이터를 삽입하는 명령은 각각 offerFirst(), offerLast() 로 구현, 덱의 앞, 뒤의 데이터를 삭제 및.. 2022. 6. 12.
[백준] 10845 큐 - Data Structure / Java • 문제 링크 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net • 풀이 과정 Queue(FIFO) 자료구조에 관련된 기본적인 동작들을 구현하는 문제. 이전에 풀이한 10828 문제와 전체적인 구현 방식은 동일하다. 추가로 큐의 가장 뒤에 있는 정수를 출력하는 back 명령어를 구현 시 큐의 가장 뒤에 있는 정수는 가장 마지막에 offer, 또는 add 한 값으로, 이를 back 변수에 갱신해주고 back 명령이 주어질 때 그대로 back 변수에 저장된 값을 출력한다. • 풀이 코드 import .. 2022. 6. 12.
[백준] 10828 스택 - Data Structure / Java • 문제 링크 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net • 풀이 과정 Stack(LIFO) 자료구조에 관련된 기본적인 동작들을 구현하는 문제. 입력받은 명령어를 sprit 함수로 comm 배열의 0번째 인덱스에 저장시키고 push 할 값은 1번째 인덱스로써 스택에 삽입하며, 각각의 입력받은 명령어를 스택 자료구조의 명령어에 대입시켜 구현하여 정답을 출력한다. • 풀이 코드 import java.io.BufferedReader; import java.io.BufferedWriter; im.. 2022. 6. 12.
[백준] 1697 숨바꼭질 - Graph Theory / Java • 문제 링크 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net • 풀이 과정 너비 우선 탐색을 수행할 함수를 정의, 현재 위치(n) 와 도착 위치(k) 를 매개변수로 받고 큐에 현재 위치를 저장한다. 그리고 방문 여부를 확인할 chk 배열을 문제에 제시된 조건에 의해 100,001의 크기로 생성, 현재 위치를 1로 표시한다. 현재 위치는 loc 변수에, 다음으로 이동할 위치를 move 변수에 설정하며 3가지 이동 방법 (n + 1, n - 1, n * 2) 으로 이동한 모든 경우를 .. 2022. 6. 11.
[백준] 16953 A → B - Graph Theory / Java • 문제 링크 16953번: A → B 첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다. www.acmicpc.net • 풀이 과정 • 풀이 코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class Main { public static void main(String[] args) thr.. 2022. 6. 10.