본문 바로가기

728x90

queue

[백준알고리즘] 1057번: 토너먼트 -C++ [백준알고리즘] 1057번: 토너먼트 -C++ 1057번: 토너먼트 (acmicpc.net) 1057번: 토너먼트 김지민은 N명이 참가하는 스타 토너먼트에 진출했다. 토너먼트는 다음과 같이 진행된다. 일단 N명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를 www.acmicpc.net 김지민과 임현수가 만나는 라운드를 출력하는 문제다. 이 문제는 수학적으로 쉽기도 하고, 직접 구해도 풀 수 있는 문제다. 나는 여기서 직접 만나는 경우를 구했다. 잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다 먼저, 앞서 수학적으로도 구할 수 있고, 직접 일일이 구할 수도 있다고 했다. 수학적으로 구할 수 있는 방법은 다음과 같다. 현재 라운드에서 참가자의 번호가 \( N.. 더보기
[백준알고리즘] 2798번: 블랙잭 -Python, C++ [백준알고리즘] 2798번: 블랙잭 -Python, C++ 2798번: 블랙잭 (acmicpc.net) 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 저번에도 파이썬으로 풀었던 문제인데, 파이썬은 먼저 조합을 모두 구한 뒤 적절한 답을 찾았다면, 이번에 푼 C++은 약간 다르게 풀었다. BFS와 비슷하게 풀었으며, \(Queue\)를 사용했다. \(Queue\) 안에는 tuple을 사용해서 세 개의 값을 쌍으로 단위 처리했다. tuple 안에는 (카드 선택 횟수, 현재까지 선.. 더보기
[백준알고리즘] 2573번: 빙산 -Python [백준알고리즘] 2573번: 빙산 -Python https://www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 나타내는 M개의 정수가 한 개의 빈 칸을 사이에 두고 주어진다. 각 칸에 들어가는 값은 0 이상 10 이하이다. 배열에서 빙산이 차지하는 칸의 개수, 즉, 1 이상의 정수가 들어가는 칸의 개수는 10,000 개 이하이다. 배열의 첫 번째 행과 열, 마지 www.acmicpc.net 이 코드는 PyPy3로만 통과한 코드다. Python3로는 시간 초과가 발생한다. 사실 처음.. 더보기
[백준알고리즘] 7576번: 토마토 -Python [백준알고리즘] 7576번: 토마토 -Python https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토들의 정보가 주어진다. 즉, 둘째 줄부터 N개의 줄에는 상자에 담긴 토마토의 정보가 주어진다. 하나의 줄에는 상자 가로줄에 들어있는 토마토의 상태가 M개의 정수로 주어진다. 정수 1은 익은 토마토, 정수 0은 익지 않은 토마토, 정수 -1은 토마 www.acmicpc.net 시간 초과 때문에 고생을 조금 했던 문제이다. 우선은 시간을 줄인 부분을 빼고 다른 부분.. 더보기
[백준알고리즘] 1966번: 프린터 큐 -Python [백준알고리즘] 1966번: 프린터 큐 -Python https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 문제 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 쌓여서 FIFO - First In First Out - 에 따라 인쇄가 되게 된다. 하지만 상근이는 새로운 프린터기 내부 소프트웨어를 개발하였는데, 이 프린터기는 다음과 같은 조건에 따라 인쇄를 하게 된다. 현재 Queue의 가장 앞에 있는 문서의 ‘중요도’를 www.acmicpc.net 이전에 푼 2164번 문제처럼 큐의 문제를 덱을 사용해서 풀 것이다. 여기서는 P.. 더보기
[백준알고리즘] 11866번: 조세퍼스 문제 0 -Java [백준알고리즘] 11866번: 조세퍼스 문제 0 -Java https://www.acmicpc.net/problem/11866 11866번: 조세퍼스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net 큐, 덱에 있는 문제이고, 큐를 이용한 문제라고 나와있는데 굳이 큐를 사용해야 되나? 싶은 문제였다. 여기서 큐의 특징 FIFO가 나타날만한 부분은 일치하는 값을 차례대로 뽑아서 큐에 넣은 후에 마지막에 한 번에 쭉 출력해 내는 것이다. 굳이 사용하고자 한다면, 둥글게 앉은 다음에 예에서 3번째 사람마다 빠진다고 했을 때를 예를 들어보면 다음과 같이 이용이 가능하다. 앉아있는 상태 제외된 상태 ... ... poll 해준 .. 더보기

728x90