[백준] 24511번: queuestack - Kotlin[코틀린]
·
알고리즘/Baekjoon
문제 24511번: queuestack 첫째 줄에 queuestack을 구성하는 자료구조의 개수 $N$이 주어진다. ($1 \leq N \leq 100\,000$) 둘째 줄에 길이 $N$의 수열 $A$가 주어진다. $i$번 자료구조가 큐라면 $A_i = 0$, 스택이라면 $A_i = 1$이다. 셋째 줄 www.acmicpc.net 풀이 처음에는 리스트를 이용해 큐스택을 직접 구현하여 해결하려 했지만, 당연하게도 시간 초과가 발생했다. 모든 요소에서 계산을 처리하면 시간복잡도가 O(NxM)이 되는데, 문제에서 주어진 범위에 따라 N = 10만, M이 10만일 때는 100억의 계산이 필요하기 때문이다. 대신 큐와 스택의 특성을 이용해 계산하는 방법을 생각해 보아야한다. 먼저 스택은 현재 삽입된 원소가 다시 ..
[백준] 2164번: 카드2 - Kotlin[코틀린]
·
알고리즘/Baekjoon
문제 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 풀이 Queue를 활용해 풀이하면 된다. 먼저 1 ~ num 까지 Queue에 담는다. 이후 whlie문을 통해 한 장은 버리고 한 장은 뒤로 이동시킨다. Queue에 한 장만 남는다면 while문을 종료하고 남은 한 장을 출력해주면 된다. 코드 import java.util.* fun main() { val br = System.`in`.bufferedReader() val bw = System.out.bufferedWriter() val num = br..
[백준] 2161번: 카드1 - Kotlin[코틀린]
·
알고리즘/Baekjoon
문제 2161번: 카드1 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 풀이 Queue를 활용해 풀이하면 된다. 먼저 1 ~ num 까지 Queue에 담는다. 이후 while문을 통해 한 장은 버리면서 출력하고 한 장은 뒤로 이동시킨다. 버릴 카드가 없거나 맨 뒤로 이동시킬 카드가 없다면 while문을 종료한다. 코드 import java.util.* fun main() { val br = System.`in`.bufferedReader() val bw = System.out.bufferedWriter() val num = b..