728x90
반응형

자바 134

[JAVA / 자바] 백준 4949번 - 균형잡힌 세상

문제 세계는 균형이 잘 잡혀있어야 한다. 양과 음, 빛과 어둠 그리고 왼쪽 괄호와 오른쪽 괄호처럼 말이다. 정민이의 임무는 어떤 문자열이 주어졌을 때, 괄호들의 균형이 잘 맞춰져 있는지 판단하는 프로그램을 짜는 것이다. 문자열에 포함되는 괄호는 소괄호("()")와 대괄호("[]")로 2종류이고, 문자열이 균형을 이루는 조건은 아래와 같다. 모든 왼쪽 소괄호("(")는 오른쪽 소괄호(")")와만 짝을 이뤄야 한다. 모든 왼쪽 대괄호("[")는 오른쪽 대괄호("]")와만 짝을 이뤄야 한다. 모든 오른쪽 괄호들은 자신과 짝을 이룰 수 있는 왼쪽 괄호가 존재한다. 모든 괄호들의 짝은 1:1 매칭만 가능하다. 즉, 괄호 하나가 둘 이상의 괄호와 짝지어지지 않는다. 짝을 이루는 두 괄호가 있을 때, 그 사이에 있는..

[JAVA / 자바] 백준 1874번 - 스택 수열

문제 스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가지고 있다. 1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있다. 이때, 스택에 push 하는 순서는 반드시 오름차순을 지키도록 한다고 하자. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지, 있다면 어떤 순서로 push와 pop 연산을 수행해야 하는지를 알아낼 수 있다. 이를 계산하는 프로그램을 작성하라. 입력 첫 줄에 n (1 ≤ n ≤ 100,000)이 주..

[자료구조] 이진 탐색 트리 Binary Search Tree

이진 탐색 트리 (Binary Search Tree) - 이진 트리에 탐색을 위한 조건을 추가하여 정의한 자료구조 - 정의 ㄴ 모든 원소는 서로 다른 유일한 키를 가짐 ㄴ 왼쪽 서브 트리에 있는 원소의 키들은 그 루트의 키보다 작음 ㄴ 오른쪽 서브 트리에 있는 원소의 키들은 그 루트의 키보다 큼 ㄴ 왼쪽 서브 트리와 오른쪽 서브 트리도 이진 탐색 트리 - 연산 ㄴ 루트에서 시작 ㄴ 탐색할 키 값을 루트 노드의 키값과 비교한다 ▶ 키 값 = 루트 노드의 키 값 : 원하는 원소를 찾았으므로 탐색 연산 성공 ▶ 키 값 루트 노드의 키 값 : 루트 노드의 오른쪽 서브 트리에 대해 탐색 연산 수행 ㄴ 서브 트리에 대해 순..

자료구조 2022.01.16

[자료구조] 트리 Tree

트리 (tree) - 원소들 간 1 : 多 관계를 가지는 비선형 자료구조 - 원소들 간 계층 관계를 가지는 계층형 자료구조 - 상위 원소에서 하위 원소로 내려가면서 확장되는 나무 모양의 구조 ex) ☞ 노드 - 트리의 원소 : A, B, C, D, E, F, G, H, I, J, K, L ☞ 루트 노드 - 트리의 시작 노드 : A ☞ 간선 - 노드를 연결하는 선(= 부모 노드와 자식 노드를 연결하는 선) ☞ 형제 노드 - 같은 부모 노드의 자식 노드들 : (B, C, D), (E, F), (H, I, J), (K, L) ☞ 조상 노드 - 간선을 따라 루트 노드까지 이르는 경로에 있는 모든 노드들 : K의 조상 노드 = F, B, A ☞ 서브 트리 - 부모 노드와 연결된 간선을 끊었을 때 생성되는 트리 :..

카테고리 없음 2022.01.15

[JAVA / 자바] 백준 10816 - 숫자 카드 2

문제 숫자 카드는 정수 하나가 적혀 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 몇 개 가지고 있는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다. 셋째 줄에는 M(1 ≤ M ≤ 500,000)이 주어진다. 넷째 줄에는 상근이가 몇 개 가지고 있는 숫자 카드인지 구해야 할 M개의 정수가 주어지며, 이 수는 공백으로 구분되어 있다. 이 수도 -10,000,000보다 크거나 같고, 10,000..

[JAVA / 자바] 백준 10828번 - 스택

문제 정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 다섯 가지이다. push X: 정수 X를 스택에 넣는 연산이다. pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 스택에 들어있는 정수의 개수를 출력한다. empty: 스택이 비어있으면 1, 아니면 0을 출력한다. top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. 입력 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보..

[JAVA / 자바] 백준 1181번 - 단어 정렬

문제 알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 길이가 짧은 것부터 길이가 같으면 사전 순으로 입력 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. 출력 조건에 따라 정렬하여 단어들을 출력한다. 단, 같은 단어가 여러 번 입력된 경우에는 한 번씩만 출력한다. 문제 접근 방법 해당 문제는 입력을 위 조건에 따라 정렬된 채로 출력하면 되는 문제이다. 이때, 중요한 것은 첫 번째로 입력에 중복이 있을 수 있고 출력에는 중복이 없어야 한다는 것이고, 두 번째로 위 조건에 맞게 정렬해야 한다는 것..

[JAVA / 자바] 백준 10814번 - 나이순 정렬

문제 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름이 공백으로 구분되어 주어진다. 나이는 1보다 크거나 같으며, 200보다 작거나 같은 정수이고, 이름은 알파벳 대소문자로 이루어져 있고, 길이가 100보다 작거나 같은 문자열이다. 입력은 가입한 순서로 주어진다. 출력 첫째 줄부터 총 N개의 줄에 걸쳐 온라인 저지 회원을 나이 순, 나이가 같으면 가입한 순으로 한 줄에 한 명씩 나이와 이름을 공백으로 구분해 출력한다. 문제..

[JAVA / 자바] 백준 9012번 - 괄호

문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’와 ‘)’ 만으로 구성되어 있는 문자열이다. 그중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x와 y를 접합(concatenation)시킨 새로운 문자열 xy도 VPS 가 된다. 예를 들어 “(())()”와 “((()))” 는 VPS이지만 “(()(”, “(())()))” , 그리고 “(()” 는 모두 VPS 가 아닌 문자열이다. 여러분은 입력으로 주어진 괄호 문자열이 VPS..

[자료구조] 수식의 표기법 (Notation)

수식의 표기법 - 전위 표기법 (prefix notation) : 연산자를 피연산자 앞에 표기하는 방법 (ex +AB) - 중위 표기법 (infix notation) : 연산자를 피연산자의 가운데 표기하는 방법 (ex A+B) - 후위 표기법 (postfix notation) : 연산자를 피연산자 뒤에 표기하는 방법 (ex AB+) 중위 표기식 ㅡ변환ㅡ> 전위 표기식 ① 수식의 각 연산자에 대해 우선순위에 따라 괄호를 사용하여 다시 표현 ② 각 연산자를 그에 대응하는 왼쪽 괄호의 앞으로 이동 ③ 괄호 제거 EX) A * B - C / D 1단계 : ((A * B) - (C / D)) 2단계 : -(*(A B) / (C D)) 3단계 : -*AB/CD 중위 표기식 ㅡ변환ㅡ> 후위 표기식 ① 수식의 각 연산..

자료구조 2022.01.09
728x90
반응형