본문 바로가기

Algorithm64

[백준] 11866-요세푸스 문제 0-Java [백준] 11866-요세푸스 문제 0-Java ❓문제 요세푸스 문제는 다음과 같다. 1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 이다. N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오. 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. K,N 범위 : 1 ≤ K ≤ N ≤ 1,000 🖊️풀이법 우선, 문제에 대해서 알아보자. 총 7번의.. 2023. 7. 9.
[백준] 2164-카드 2-Java [백준] 2164-카드 2-Java ❓문제 이번 문제는 정말정말 간단하다. 1~N까지의 N장의 카드가 있다. 카드는 위에서 1 부터 아래 N까지 순서로 놓여있다. 제일 위의 카드 한장을 버리고, 다음 카드를 가장 아래로 놓는다. 계속해서 해당 행위를 반복하였을때, 마지막에 남는 카드를 구하라. 🖊️풀이법 이번 문제 또한 큐의 자료구조를 사용하면, 너무 쉽기 때문에 주석으로 대체한다. 정답 코드 import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamRead.. 2023. 7. 9.
[백준] 18258-큐 2-Java [백준] 18258-큐 2-Java ❓문제 정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여섯 가지이다. push X: 정수 X를 큐에 넣는 연산이다. pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 큐에 들어있는 정수의 개수를 출력한다. empty: 큐가 비어있으면 1, 아니면 0을 출력한다. front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. N의 범위 1 ≤ N ≤ 2,000,000 주어지는.. 2023. 7. 9.
[백준] 4949-균형잡힌 세상-Java [백준] 4949-균형잡힌 세상-Java ❓문제 입력받은 문자열에서 소괄호(“(“, “)”)와 대괄호(“[”, “]”)가 올바르게 VPS(Valid Parenthesis String)를 이루는지 확인하고, 각 문자열이 VPS인 경우, “yes”를 VPS가 아닌 경우 “no”를 출력하면 된다. 이때 입력의 종료조건은 온점 하나(“.”)가 입력된다. 🖊️풀이법 간단하다. 앞서 풀었던 괄호는 Stack의 성질을 이용하면 간단하게 풀 수 있으며, 각 문제가 제시하는 조건을 의사코드로 작성한 후 코드로 순서대로 구현하면 된다. 문자열이 온점 하나가 아닌경우 반복문을 계속 순회, 온점 하나가 입력될 경우 반복문을 종료한다. 만약 입력받은 문자열을 순회하는 동안 괄호를 여는 ( 나 [가 입력될 경우, 스택에 push.. 2023. 7. 9.
[백준] 1874-스택 수열-Java [백준] 1874-스택 수열-Java ❓문제 스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가지고 있다. 1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있다. 이때, 스택에 push하는 순서는 반드시 오름차순을 지키도록 한다고 하자. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지, 있다면 어떤 순서로 push와 pop 연산을 수행해야 하는지를 알아낼 수 있다. 이를 계산하는 프로그램을 작성하라. 첫 줄에 n (1.. 2023. 7. 9.
[백준] 9012-괄호-Java [백준] 9012-괄호-Java ❓문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(concatenation)시킨 새로운 문자열 xy도 VPS 가 된다. 예를 들어 “(())()”와 “((()))” 는 VPS 이지만 “(()(”, “(())()))” , 그리고 “(()” 는 모두 VPS 가 아닌 문자열이다. 여.. 2023. 7. 9.