자료구조와 알고리즘/문제풀기
-
백준 17413 - 단어뒤집기2자료구조와 알고리즘/문제풀기 2023. 4. 5. 13:20
원래 단어 뒤집는 문제에서 일때는 그대로 출력하는 것이 추가된 것 뿐이다. public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); String input = br.readLine()+'\n'; Stack ss = new Stack(); Stack ss2 = new Stack(); boolean flag = false; //괄호가 시작된건지 아닌지 확인 for(char a: input.toCha..
-
백준 10845 - 큐 구현자료구조와 알고리즘/문제풀기 2023. 4. 5. 11:38
배열로 큐를 구현하는 문제이다. -큐는 FIFO구조이다. 스택과 반대로 순서를 의미할 때 사용한다. =arr.length) ensure(); arr[end++] = n; } //fifo public int pop(){ if(empty() ==1 || size() ==0)return -1; int rval = arr[begin]; arr[begin++]=0; return rval; } //end - begin public int size(){ return end-begin; } public int empty(){ if(size()==0) return 1; return 0; } //맨 앞 public int front(){ if(empty()==1||size()==0)return -1; return arr[..
-
백준 1406 - 에디터자료구조와 알고리즘/문제풀기 2023. 4. 5. 11:29
해결방법 - 첫 줄을 입력받아 데이터를 저장한다. - 각 상황에 맞게 명령을 구현한다. -스택을 사용하면, 스택 두개를 두고 - L - 왼쪽 스택에서 글자하나 pop()해서 오른쪽 스택에 넣기 - D - 오른쪽 스택에서 글자하나 pop()해서 왼쪽 스택에 넣기 - B - 왼쪽스택에 글자하나 pop()하기 - P - 왼쪽 스택에 글자하나 push()하기 - 왼쪽스택에 있는 문자 전부 pop해서 오른쪽에 넣고 오른쪽 스택 문자 하나씩 pop출력 -> abcy (왼) x(오) -->왼에서 오로 pop xycba ->이거 다시 pop하면 abcdyx (뒤집은걸 다시 뒤집은 것 뿐) -> 왼쪽에 몰아넣고 배열을 만들어서 배열 마지막 인덱스부터 pop()으로 넣어 만들어도 됨 public static void ma..
-
백준 1874 - 스택수열자료구조와 알고리즘/문제풀기 2023. 4. 4. 21:22
스택에 오름차순으로 숫자를 하나씩 집어넣고, 입력된 숫자들을 만든다. 가령 4,3,6,8 이라면 스택에 1,2,3,4까지 넣고 4 pop(), 다음 3 pop(), 다시 5,6 push()하고 6 pop(), 7,8 push() ,8 pop() ++++--++-++-로 4,3,6,8을 만드는 것이다. 다음의 경우에는 만들 수 없는 수열이다. 1,2,5,3,4 스택에 1 push -> 1pop() -> 2push() ->2 pop() , 3,4,5 push() -> 5 pop() 이때 3을 꺼내려면 4를 먼저 pop()해야하므로 만들 수 없는 수열이다. 입력: 첫 줄에 n (1 ≤ n ≤ 100,000)이 주어진다. 둘째 줄부터 n개의 줄에는 수열을 이루는 1이상 n이하의 정수가 하나씩 순서대로 주어진다...
-
백준 9012 - 괄호자료구조와 알고리즘/문제풀기 2023. 4. 4. 20:19
괄호가 짝이 맞는지 찾는 문제이다. -해결방법 1. 괄호는 ()형태만 가능하다. 2. (만 저장했다가 )가 나오면 삭제 이때 닫는괄호)가 먼저나오면 ->불완전한 괄호 3 입력받은 모든 문자열이 검사가 끝났을 때, 저장된 것이 없다면 -> 완벽한 괄호 (가 남아 있다면 -> 불완전한 괄호 풀이1 public class Main{ public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int t ..
-
백준 9093 - 단어뒤집기자료구조와 알고리즘/문제풀기 2023. 4. 4. 20:01
문장이 주어지면, 단어를 뒤집어야한다. 입력:첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 공백이 하나 있다. 출력:각 테스트 케이스에 대해서, 입력으로 주어진 문장의 단어를 모두 뒤집어 출력한다. 예제입력 2 I am happy today We want to win the first prize 예제출력 I ma yppah yadot eW tnaw ot niw eht tsrif ezirp -해결 방법 1. 테스트케이스 입력받기 & 문자열 입력받기 2. 공백으로 단어가 구분되어 있으므로, 공백까지 문자를 저장했다가 공백을 만나면 뒤집어서 출력 *개행문자도..
-
백준 10828 - 스택 구현자료구조와 알고리즘/문제풀기 2023. 4. 4. 19:37
import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws Exception{ BufferedReader s = new BufferedReader(new InputStreamReader(System.in)); MSt ms = new MSt(); int input = Integer.valueOf(s.readLine()); String[] temp; int result=0; while(input-- > 0){ temp = s.readLine().split(" "); switch (temp[0]){ case "push": ms.push(..