Post

백준 알고리즘 문제 풀기 - 기초

프로그래머스와 다르게 백준에서 알고리즘 문제를 풀고 제출하기 위해서는 사전 작업이 필요하다. 익숙하지 않으면 시간이 좀 걸린다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/*
* 클래스는 Main 단 1개만 존재해야함
* */
public class Main {
	/*
	* 각종 static 변수 선언
	* */
	public static int[] stack;
	public static int size = 0;

	/*
	* 아래 메서드도 고정
	* */
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		StringTokenizer st;


	}
}

간단하게 연습문제로 10828번 스택문제 를 풀어본다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
14
push 1
push 2
top
size
empty
pop
pop
pop
size
empty
pop
push 3
empty
top

백준 문제를 보면 전부 다 이렇게 주어진다.

  • 첫번째 ~ 두번째 줄은 총 명령 횟수, 배열의 크기 등 중요한 설정 정보
  • 다음 줄 부터 수행해야 할 명령어가 나와있다.

전체 프로그램이 동작하는 시간 기준이 타이트하기 때문에 BufferedReader, BufferedWriter, StringBuilder, StringTokenizer 등을 잘 활용해야 한다.

이런 종류의 문제는 굳이 코드 작성하지 않아도 답이 떠오를 만큼 쉬운 편에 속하지만 직접 풀어보면서 I/O 처리와 함께 불필요한 코드 줄이는 것을 훈련하는 것의 중요한 첫걸음이라고 생각한다.

또한 Array 를 사용하지 않고, Stack 을 바로 사용한다면 pop, empty 이런 메서드를 직접 구현할 필요가 없어진다. 하지만, Array 를 통해 Stack 을 구현하면서, 메서드 내에서 포인터가 가르키는 인덱스, 예외 처리 등을 생각해 볼 수 있다.

Queue, HashSet, Deque, PriorityQueue, Binary Tree 등 자료 구조를 배열로 한땀 한땀 구현해보면 해당 자료구조에 대해서 더 깊은 이해와 응용이 가능하다고 생각한다.

특히 이진 트리 구조로 SQL 이 동작하기 때문에 여러 번 반복해본다.

This post is licensed under CC BY 4.0 by the author.