본문 바로가기

알고리즘48

[알고리즘/baekjoon] 1966_프린터 큐(python) 문제 https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net # 이 문제의 핵심은 중요도가 같은 문서의 처리를 어떻게 하는지가 관건이다. # 입력을 보면 첫 줄에 테스트 케이스의 수와 다음 줄에 문서의 개수를 나타내는 N변수와 M번째 문서의 인덱스가 나타난다. # 그다음 줄에는 N개 문서의 중요도가 나타난다. # 출력에는 M번째 문서의 인덱스가 몇 번째로 출력되는지 출력하는 것이다. # 중요도가 같은 문서가 없다고 가정하면 중요도가 가장 높은 값과 pop.. 2021. 10. 25.
[알고리즘/baekjoon] 1874_스택 수열(python) 문제 https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net # 이 문제는 문제를 잘 읽고 이해를 하는 것이 먼저다. (필자는 문제를 이해하는데 오랜 시간이 걸렸다) # 1. 1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만든다. # 2. 스택에 push 하는 순서는 반드시 오름차순 # 3. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 .. 2021. 10. 25.
[알고리즘/baekjoon] 11866_요세푸스 문제 0(python) 문제 https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net # 필자는 이 문제를 보자마자 deque의 rotate가 생각이 나서 deque를 사용해서 풀었다. # why deque ? 원을 이룬다 -> rotate # deque의 rotate함수는 말그대로 회전하는 기능을 갖는 함수이다. 함수 값이 양수면 오른쪽, 음수면 왼쪽으로 rotate한다. # N의 크기만큼 1-N 까지 deque에 받아온다. # que의 맨 앞(=rotate(K-1))으로 K번째 수를 이동하고 제거해준다. # 그리고 마지막 수인 경우 ","를 출력해주지 않기.. 2021. 10. 24.
[알고리즘/baekjoon] 10816_숫자 카드2(python) 문제 https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net # 이 문제는 이분 탐색이나 Dictonary로 풀 수 있는데, 필자는 dictonary로 풀 것이다. # dictonary 사용법과 구조에 대한 이해가 있어야 한다. # 먼저 상근이가 가지고 있는 숫자 카드와 개수를 dict에 넣는다 # dict에서 key값을 찾아 value를 반환하고, key 값이 없으면 0을 출력한다. 정답 * 전체 코드가 필요하신 분.. 2021. 10. 24.
[알고리즘/baekjoon] 4949_균형잡힌 세상(python) 문제 https://www.acmicpc.net/problem/4949 4949번: 균형잡힌 세상 하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마 www.acmicpc.net # 이 문제는 조건을 이해할수 있다면 쉬운 문제이다. # 모든 왼쪽 소괄호("(")는 오른쪽 소괄호(")")와만 짝을 이뤄야 한다. # 모든 왼쪽 대괄호("[")는 오른쪽 대괄호("]")와만 짝을 이뤄야 한다. # 입력의 종료 조건으로 맨 마지막에 점(.)이 들어온다. 정답 # list 범위 에러가 발생한 이유 # # if len(stack) != 0 and stack[-1] .. 2021. 10. 24.
[알고리즘/baekjoon] 1920_수 찾기(python) 문제 https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net # 이 문제는 in 연산자를 이용해 풀 수 있지만 이분 탐색에 더 익숙해지기 위해서 이분 탐색으로 풀었다. # 이분 탐색을 사용하기 전에 탐색을 할 자료형에 sort(정렬)해주는 것은 필수이다. # 이분 탐색 함수를 만들어 찾고자 하는 원소를 하나씩 넣고 True를 반환하면 1을 출력 아니면 0을 출력하도록 구현했다. 정답 - binary 함수.. 2021. 10. 22.