본문 바로가기

전체 글134

[Queue] 카드 버리기 1번부터 N번까지 숫자가 적힌 카드가 1번 카드가 제일 위에, N번 카드가 제일 아래쪽에 오도록 순서대로 쌓여 있다. 이 카드 더미를 다음과 같은 규칙으로 한 장의 카드씩 버리고자 한다. 카드 더미의 가장 위에 있는 카드 한 장은 버린다.다음에는 제일 위에 있는 카드 한 장을 카드 더미의 가장 아래쪽으로 옮긴다. 위와 같은 규칙으로 카드를 하나씩 버릴때, 가장 마지막으로 버리게 되는 카드 번호를 출력하시오. 예를 들어, N=4의 경우, 카드 더미는 처음에 위에서부터 1, 2, 3, 4 순서로 쌓여 있다. 1을 버리고 2를 아래쪽으로 옮기면 카드 더미는 3, 4, 2 순서가 된다. 3을 버리고 4를 아래쪽으로 옮기면 카드 더미는 2, 4 순서가 된다. 2를 버리고 4를 아래쪽으로 옮기면 카드 더미는 4가 .. 2022. 12. 13.
[Stack] 내림차순 수열 N개의 양의 정수를 원소로 가진 수열 A가 주어졌을 때, A의 원소로 내림차순 수열을 만들고자 한다. 내림차순 수열은 A에서 가장 큰 원소에서 순차적으로 더 작은 값들로 구성된 수열을 말한다. 예를 들어, N=6, A=[6, 9, 7, 6, 4, 6]일 때 A의 내림차순 수열은 다음과 같다. 9 7 6 수열 A가 주어졌을 때, A의 내림차순 수열을 출력하시오. Hint: 스택을 이용하여 더 작거나 같은 값들은 모두 pop()한 후에 push()를 하는 전략을 사용할 수 있다. Input 첫째 줄에 원소의 개수 N이 주어진다. 1 2022. 12. 13.
[Stack] 괄호의 완성 어떤 문자열 S에 앞뒤로 괄호를 추가하여 S를 올바른 괄호열로 만들고자 한다. 괄호로만 구성된 문자열 S가 주어졌을 때, S를 올바른 괄호열로 만들기 위해 앞과 뒤에 붙여할 할 괄호의 최소 개수를 출력하시오. 예를 들어, S = "((()" 인 경우에는 S="((()))"로 뒤에 2개의 괄호를 추가하면 된다. S="()))("인 경우에는 S="((()))()"로 앞에 2개, 뒤에 1개의 괄호를 추가하면 된다. 단, 올바른 문자열을 만들 수 없는 입력은 주어지지 않는다고 가정해도 된다. Input 첫째 줄에 괄호로만 구성된 문자열 S가 주어진다. [1] )))() [2] )(() [3] ))()(( [4] )(()(())) Output 첫째 줄에 S를 올바른 괄호열로 만들기 위해 앞뒤로 추가해야 할 괄호의.. 2022. 12. 13.
[Queue] 요세푸스의 선물 큐: 한쪽 끝에서는 삭제만 가능하고 다른 한쪽 끝에서는 추가만 가능한 추상 데이터 타입 FIFO: First-In, First-Out enqueue: 큐의 rear에 새로운 항목을 추가 dequeue: 큐의 front에 있는 항목을 제거 요세푸스는 N명의 제자들에게 선물을 주고 싶었으나, 선물이 하나 밖에 없었다. 그래서 다음과 같은 규칙을 가지고 게임을 해서 마지막으로 남은 한 사람에게만 선물을 주기로 했다. 모든 제자들은 무작위로 1번부터 N번까지 번호를 부여받아 번호 순서대로 시계방향으로 원을 이루어 앉는다.게임의 각 단계에서 시작 위치에 있는 제자는 1을 외치고, 시계방향으로 돌아가며 1씩 증가한 숫자를 외친다.t번째 단계에서 t^3, 즉, t의 세제곱수를 외치는 제자는 게임에서 탈락한다.t+1번.. 2022. 12. 13.