자료구조와 알고리즘/문제풀기
-
백준 2609,1934 - 최대공약수와 최소공배수,최소공배수자료구조와 알고리즘/문제풀기 2023. 4. 10. 18:36
두 개의 자연수를 입력받아 최대 공약수와 최소 공배수 출력하는 것 2609 최대공약수 최소공배수 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)); String[] input =br.readLine().split(" "); int a = Integer.parseInt(input[0]); int b = Integer.parseInt((input[1])); in..
-
백준 10430 - 나머지자료구조와 알고리즘/문제풀기 2023. 4. 10. 15:34
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)); String[] input =br.readLine().split(" "); int[] arr = new int[input.length]; for(int i=0; i +m한번 해주면 양수로만 나옴 *C(JAVA)와 python 나머지 구하는 방식 차이 c와 java는 나머지를 버림, python은 내림을 이..
-
백준 10799 - 쇠막대기자료구조와 알고리즘/문제풀기 2023. 4. 5. 13:43
올바른 괄호문제를 응용한 문제이다. 해결방법 - (하나당 쇠막대기 1개로 간주 스택에 push() - )닫는괄호 등장시 - 바로 인접한 여는 괄호 존재시 -->레이저로 간주 총 길이에 스택의 사이즈(총 쇠막대기)만큼 + (2등분 되므로 기존 쇠막대기 만큼 +됨) - 인접한 여는 괄호가 없을 시 -->쇠막대기 끝을 의미 쇠막대기 하나 없어짐 -->>바로 인접한 여는괄호인지 아닌지를 판단하는게 중요하다. 풀이 1 public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWri..
-
백준 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이하의 정수가 하나씩 순서대로 주어진다...