배경지식
Stack<Integer> s = new Stack<>();
s.push(5); //삽입
s.push(4); //삽입
s.pop(); //제거
while(!s.empty()){
System.out.print(s.peek() + ""); //최상단값 출력
s.pop();
}
//실행결과
5
Queue<Integer> q = new LinkedList<>();
q.offer(5); //삽입
q.offer(4); //삽입
q.poll(); //제거
while(!q.isEmpty()){
System.out.print(q.poll() + "");
}
//실행결과
4
활용 1) 최대공약수 계산 : 유클리드 호제법
유클리드 호제법이란?
두 자연수 A,B에 대하여 (A>B) A를 B로 나눈 나머지를 R이라고 하자.
이때 A와 B의 최대공약수는 B와 R의 최대공약수와 같다!
static int gcd(int a, int b) {
if(a%b==0) {
return b;
}
return gcd(b,a%b);
}
활용 2) 최소공배수 계산
최소공배수 = 두수의 곱 / 두수의 최대공약수
static int lcm(int a,int b) {
return a*b/gcd(a,b);
}
DFS & BFS