알고리즘 245

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

https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n=sc.nextInt(); Stack stack = new Stack(); StringBuilde..

ALGORITHM 2022.07.16

[JAVA] 백준 10799번- 쇠막대기

https://www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next(); int answer=0; Stack stack = new Stack(); for(int i=0; i

ALGORITHM 2022.07.15

[JAVA] 알고리즘 : Queue- 응급실

import java.util.*; class Person{ int id; // 순서 int priority; // 위험도 public Person(int id, int priority){ this.id=id; this.priority=priority; } } public class Main { public int solution(int n, int m, int[] arr){ int answer=0; Queue Q=new LinkedList(); for(int i=0; itmp.priority){ // 맨 앞의 환자보다 위험도가 크면 Q.offer(tmp); // 큐의 끝에 맨 앞 환자를 추가 tmp=null; break; } } if(tmp!=null){ // 맨 앞 환자보다 우선순위 높은 환자가 없다..

ALGORITHM 2022.07.15

[JAVA] 알고리즘 : Queue- 교육과정설계

import java.util.*; public class Main { public String solution(String need, String plan){ String answer="YES"; Queue Q=new LinkedList(); for(char x : need.toCharArray()) Q.offer(x); // 큐에 필수 과목 세팅 for(char x : plan.toCharArray()){ if(Q.contains(x)){ // 큐에 있으면 필수과목 if(x!=Q.poll()) return "NO"; // 큐에 있는 첫 과목이 아니면 // poll()은 꺼내고 리턴받음 } } if(!Q.isEmpty()) return "NO"; // 큐가 비어있지 않으면 return answer; }..

ALGORITHM 2022.07.14

[JAVA] 알고리즘 : Stack- 후위식 연산(postfix)

import java.util.*; public class Main { public int solution(String str) { int answer=0; Stack stack = new Stack(); for(char x : str.toCharArray()){ if(Character.isDigit(x)) stack.push(x-48); // 숫자라면 스택에 추가 else{ int rt=stack.pop(); int lt=stack.pop(); // 늦게 꺼내진 숫자가 왼쪽에 위치 if(x=='+') stack.push(lt+rt); else if(x=='-') stack.push(lt-rt); else if(x=='*') stack.push(lt*rt); else if(x=='/') stack.pus..

ALGORITHM 2022.07.12

[JAVA] 알고리즘 : Stack- 올바른 괄호

import java.util.*; public class Main { public String solution(String str){ String answer = "YES"; Stack stack = new Stack(); for(char x : str.toCharArray()){ if(x=='(') stack.push(x); else{ if(stack.isEmpty()) return "NO"; // 닫는 괄호가 많은 상황 stack.pop(); } } if(!stack.isEmpty()) return "NO"; // 여는 괄호가 많은 상황 return answer; } public static void main(String[] args) { Main T = new Main(); Scanner sc =..

ALGORITHM 2022.07.11