728x90 Algorithm53 [백준] 요세푸스 문제 0 / 11866번/ 파이썬 / python / 큐 📌 문제 요세푸스 문제는 다음과 같다. 1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 이다. N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오. 😈 입력 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) 💬 출력 예제와 같이 요세푸스 순열을 출력한다. 예제 입력 : 7 3 예제 출력 : 👩💻code) .. Algorithm/Baekjoon 2021. 7. 8. [백준] 스택수열 / 1874번/ 파이썬 / python / 스택 📌 문제 스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가지고 있다. 1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있다. 이때, 스택에 push하는 순서는 반드시 오름차순을 지키도록 한다고 하자. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지, 있다면 어떤 순서로 push와 pop 연산을 수행해야 하는지를 알아낼 수 있다. 이를 계산하는 프로그램을 작성하라. 😈 입력 첫 줄에 n (1 ≤ n ≤ 100,000).. Algorithm/Baekjoon 2021. 7. 8. [백준] 카드 2 / 2164번 / 파이썬 / python / 큐 📌 문제 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. 우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. 예를 들어 N=4인 경우를 생각해 보자. 카드는 제일 위에서부터 1234 의 순서로 놓여있다. 1을 버리면 234가 남는다. 여기서 2를 제일 아래로 옮기면 342가 된다. 3을 버리면 42가 되고, 4를 밑으로 옮기면 24가 된다. 마지막으로 2를 버리고 나면, 남는 카드는 4가 된다. N이 주어졌을 때, 제일 마지막에 남게 되는 카드를 구하는 .. Algorithm/Baekjoon 2021. 7. 8. [백준] 큐2 /18258번 / 파이썬/ python / 큐 📌 문제 정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여섯 가지이다. - push X: 정수 X를 큐에 넣는 연산이다. - pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. - size: 큐에 들어있는 정수의 개수를 출력한다. - empty: 큐가 비어있으면 1, 아니면 0을 출력한다. - front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. - back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. 😈 입력 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,.. Algorithm/Baekjoon 2021. 7. 8. [백준] 제로 /10773번 / 파이썬/ python / 스택 📌 문제 나코더 기장 재민이는 동아리 회식을 준비하기 위해서 장부를 관리하는 중이다. 재현이는 재민이를 도와서 돈을 관리하는 중인데, 애석하게도 항상 정신없는 재현이는 돈을 실수로 잘못 부르는 사고를 치기 일쑤였다. 재현이는 잘못된 수를 부를 때마다 0을 외쳐서, 가장 최근에 재민이가 쓴 수를 지우게 시킨다. 재민이는 이렇게 모든 수를 받아 적은 후 그 수의 합을 알고 싶어 한다. 재민이를 도와주자! 😈 입력 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경우 해당 수를 쓴다. 정수가 "0"일 경우에 지울 수 있는 수가 있음을.. Algorithm/Baekjoon 2021. 7. 8. [백준] 스택 / 10828번 / 파이썬 / python / 스택 📌 문제 정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 다섯 가지이다. - push X: 정수 X를 스택에 넣는 연산이다. - pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. - size: 스택에 들어있는 정수의 개수를 출력한다. - empty: 스택이 비어있으면 1, 아니면 0을 출력한다. - top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. 😈 입력 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거.. Algorithm/Baekjoon 2021. 7. 8. [백준] 어린왕자 / 1004번 / 파이썬 / python / 기하학 📌 문제 어린 왕자는 소혹성 B-664에서 자신이 사랑하는 한 송이 장미를 위해 살아간다. 어느 날 장미가 위험에 빠지게 된 것을 알게 된 어린 왕자는, 장미를 구하기 위해 은하수를 따라 긴 여행을 하기 시작했다. 하지만 어린 왕자의 우주선은 그렇게 좋지 않아서 행성계 간의 이동을 최대한 피해서 여행해야 한다. 아래의 그림은 어린 왕자가 펼쳐본 은하수 지도의 일부이다. 빨간 실선은 어린 왕자가 출발점에서 도착점까지 도달하는데 있어서 필요한 행성계 진입/이탈 횟수를 최소화하는 경로이며, 원은 행성계의 경계를 의미한다. 이러한 경로는 여러 개 존재할 수 있지만 적어도 3번의 행성계 진입/이탈이 필요하다는 것을 알 수 있다. 위와 같은 은하수 지도, 출발점, 도착점이 주어졌을 때 어린 왕자에게 필요한 최소의 .. Algorithm/Baekjoon 2021. 3. 20. [백준] 분산처리 / 1009번 / 파이썬 / python / 구현 📌 문제 재용이는 최신 컴퓨터 10대를 가지고 있다. 어느 날 재용이는 많은 데이터를 처리해야 될 일이 생겨서 각 컴퓨터에 1번부터 10번까지의 번호를 부여하고, 10대의 컴퓨터가 다음과 같은 방법으로 데이터들을 처리하기로 하였다. 1번 데이터는 1번 컴퓨터, 2번 데이터는 2번 컴퓨터, 3번 데이터는 3번 컴퓨터, ... , 10번 데이터는 10번 컴퓨터, 11번 데이터는 1번 컴퓨터, 12번 데이터는 2번 컴퓨터, ... 총 데이터의 개수는 항상 ab개의 형태로 주어진다. 재용이는 문득 마지막 데이터가 처리될 컴퓨터의 번호가 궁금해졌다. 이를 수행해주는 프로그램을 작성하라. 😈 입력 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 정수 a와 b가 주.. Algorithm/Baekjoon 2021. 3. 19. [파이썬] '그리디' 개념 및 예제 그리디 : 현재 상황에서 지금 당장 좋은 것만 고르는 방법 코딩테스트에서의 그리디 유형 - 창의력, 문제를 풀기 위한 최소한의 아이디어 떠올릴 수 있는 능력 요구 특정 문제 만났을 때 단순히 현재 상황에서 가장 좋아 보이는 것만 선택해도 풀 수 있을 지 파악! ( 코테에서 어떤 문제가 바로 유형을 파악하기 어려우면 그리디 의심! 만약 그리디 해결방법 찾을 수 없다면, 다이나믹이나 그래프 알고리즘으로 해결할 수 있는지 고민) 그리디 알고리즘은 기준에 따라 좋은 것을 선택하므로, 문제에서 '가장 큰 순서대로', '가장 작은 순서대로'와 같은 기준을 제시해준다. -> 대체로 정렬 알고리즘 사용하면 됨! 짝꿍 :) 간단한 예시 - 거스름돈) n=1260 # 총 거스름돈 count=0 # 큰 단위인 500원 부터.. Algorithm/이론 2021. 2. 23. [파이썬] '최단경로' 개념 및 예제 그리디와 다이나믹 프로그래밍이 그대로 적용! 실제 코딩 테스트에서는 최단 경로를 모두 출력하는 문제보다, 단순히 최단 거리를 출력하는 문제 많이 출제됨! 최단거리 알고리즘 종류) 1. 다익스트라 최단거리 2. 플로이드 워셜 => 1,2가 많이 출제됨 3. 벨만 포드 1. 다익스트라 - 그래프의 노드 중 특정 노드에서 출발하여 다른 노드로 가는 각각의 최단 경로 구함 - '음의 간선 없어야함' - 그리디 알고리즘에 속함 ( 매번 '가장 비용 적은 노드' 선택하므로) 원리) 1. 출발 노드 설정 2. 최단 거리 테이블 초기화 (무한대로) 3. 방문 안 한 노드 중 최단거리 가장 짧은 노드 선택 ( 우선순위 큐를 사용하여 간단히 가능) 4. 해당 노드를 거쳐 다른 노드로 가는 비용 계산하여 최단 거리 테이블 .. Algorithm/이론 2021. 2. 9. [이코테] 바닥 공사 / 파이썬 / python / 다이나믹 프로그래밍 👩🏻💻 Code 🐥 풀이 Algorithm/이코테 2021. 1. 27. [이코테] 개미 전사 / 파이썬 / python / 다이나믹 프로그래밍 👩🏻💻 Code 🐥 풀이 Algorithm/이코테 2021. 1. 27. 이전 1 2 3 4 5 다음 728x90