본문 바로가기
반응형

algorithm279

[백준/Python] 11399번 - ATM HTML 삽입 미리보기할 수 없는 소스 인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우를 생각해보자. [1, 2, 3, 4, 5] 순서로 줄을 선다면, 1번 사람은 3분만에 돈을 뽑을 수 있다. 2번 사람은 1번 사람이 돈을 뽑을 때 까지 기다려야 하기 때문에, 3+1 = 4분이 걸리게 된다. 3번 사람은 1번, 2번 사람이 돈을 뽑을 때까지 기다려야 하기 때문에, 총 .. 2024. 1. 4.
[백준/C++] 11047번 - 동전 0 HTML 삽입 미리보기할 수 없는 소스 준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다. 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오. HTML 삽입 미리보기할 수 없는 소스 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) HTML 삽입 미리보기할 수 없는 소스 첫째 줄에 K원을 만드는데 필요한 동전 개수의 최솟값을 출력한다. HTML 삽입 미리보기할 수 없는 소스 처음에는 동전이 배수로 .. 2024. 1. 4.
[프로그래머스/C++] 숫자 게임 HTML 삽입 미리보기할 수 없는 소스 xx 회사의 2xN명의 사원들은 N명씩 두 팀으로 나눠 숫자 게임을 한다. 이때 규칙은 아래와 같다. 모든 사원이 무작위로 자연수를 하나씩 부여받는다. 각 사원은 딱 한 번씩 경기를 합니다. 각 경기당 A팀, B팀에서 한 사원씩 나와 서로의 수를 공개하고, 그때 숫자가 큰 쪽이 승리하며 승리한 사원이 속한 팀은 승점을 1점 얻게 된다. 만약 숫자가 같다면 누구도 승점을 얻지 않습니다. 이 때, 전체 사원이 숫자를 부여받았으며, A팀은 자신들의 출전 순서를 전부 공개했다. B팀이 A팀의 출전순서를 보고 최대 승점을 얻는다면 얼마를 얻게 되는지 결과를 return하면 되는 문제다. HTML 삽입 미리보기할 수 없는 소스 A B result [5,1,3,7] [2,2,6.. 2024. 1. 4.
[백준/C++] 10986번 - 나머지 합 HTML 삽입 미리보기할 수 없는 소스 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) 쌍의 개수를 구해야 한다. ​ HTML 삽입 미리보기할 수 없는 소스 첫째 줄에 N과 M이 주어진다. (1 ≤ N ≤ 106, 2 ≤ M ≤ 103) 둘째 줄에 N개의 수 A1, A2, ..., AN이 주어진다. (0 ≤ Ai ≤ 109) HTML 삽입 미리보기할 수 없는 소스 첫째 줄에 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 출력한다. HTML 삽입 미리보기할 수 없는 소스 처음에는 이전에 풀었던 누적 합.. 2024. 1. 3.
[백준/C++] 11659번 - 구간 합 구하기 4 HTML 삽입 미리보기할 수 없는 소스 수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오. HTML 삽입 미리보기할 수 없는 소스 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다. HTML 삽입 미리보기할 수 없는 소스 총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다. HTML 삽입 미리보기할 수 없는 소스 구간합 구하기 문제인데 N개의 원소를 입력받고 M개의 구간의 합을 출력하는 문제였다. M개의 구간마다 원소를 더해서 출력하기에는 시간이 오래 걸릴 것 같아서 숫자를 입력받.. 2024. 1. 3.
[백준/Python] 12865번 - 평범한 배낭 HTML 삽입 미리보기할 수 없는 소스 이 문제는 아주 평범한 배낭에 관한 문제이다. 한 달 후면 국가의 부름을 받게 되는 준서는 여행을 가려고 한다. 세상과의 단절을 슬퍼하며 최대한 즐기기 위한 여행이기 때문에, 가지고 다닐 배낭 또한 최대한 가치 있게 싸려고 한다. 준서가 여행에 필요하다고 생각하는 N개의 물건이 있다. 각 물건은 무게 W와 가치 V를 가지는데, 해당 물건을 배낭에 넣어서 가면 준서가 V만큼 즐길 수 있다. 아직 행군을 해본 적이 없는 준서는 최대 K만큼의 무게만을 넣을 수 있는 배낭만 들고 다닐 수 있다. 준서가 최대한 즐거운 여행을 하기 위해 배낭에 넣을 수 있는 물건들의 가치의 최댓값을 알려주자. HTML 삽입 미리보기할 수 없는 소스 첫 줄에 물품의 수 N(1 ≤ N ≤ 100.. 2024. 1. 3.
[백준/Python] 2565번 - 전깃줄 HTML 삽입 미리보기할 수 없는 소스 두 전봇대 A와 B 사이에 하나 둘씩 전깃줄을 추가하다 보니 전깃줄이 서로 교차하는 경우가 발생하였다. 합선의 위험이 있어 이들 중 몇 개의 전깃줄을 없애 전깃줄이 교차하지 않도록 만들려고 한다. 예를 들어, 과 같이 전깃줄이 연결되어 있는 경우 A의 1번 위치와 B의 8번 위치를 잇는 전깃줄, A의 3번 위치와 B의 9번 위치를 잇는 전깃줄, A의 4번 위치와 B의 1번 위치를 잇는 전깃줄을 없애면 남아있는 모든 전깃줄이 서로 교차하지 않게 된다. 전깃줄이 전봇대에 연결되는 위치는 전봇대 위에서부터 차례대로 번호가 매겨진다. 전깃줄의 개수와 전깃줄들이 두 전봇대에 연결되는 위치의 번호가 주어질 때, 남아있는 모든 전깃줄이 서로 교차하지 않게 하기 위.. 2024. 1. 3.
[백준/Python] 11054번 - 가장 긴 바이토닉 부분 수열 HTML 삽입 미리보기할 수 없는 소스 수열 S가 어떤 수 Sk를 기준으로 S1 Sk+1 > ... SN-1 > SN을 만족한다면, 그 수열을 바이토닉 수열이라고 한다. 예를 들어, {10, 20, 30, 25, 20}과 {10, 20, 30, 40}, {50, 40, 25, 10} 은 바이토닉 수열이지만, {1, 2, 3, 2, 1, 2, 3, 2, 1}과 {10, 20, 30, 40, 20, 30} 은 바이토닉 수열이 아니다. 수열 A가 주어졌을 때, 그 수열의 부분 수열 중 바이토닉 수열이면서 가장 긴 수열의 길이를 구하는 프로그램을 작성하시오. HTML 삽입 미리보기할 수 없는 소스 첫째 줄에 수열 A의 크기 N이 주어지고, 둘째 줄에는 수열 A를 이루고 .. 2024. 1. 3.
[백준/Python] 11053번 - 가장 긴 증가하는 부분 수열 HTML 삽입 미리보기할 수 없는 소스 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. HTML 삽입 미리보기할 수 없는 소스 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000) HTML 삽입 미리보기할 수 없는 소스 첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다. HTML 삽입 미리보기할 수 없는 소스 처음에는 변수에 현재까지 가장 길었을 때의 길이와, 그때의.. 2024. 1. 3.
[백준/Python] 2156번 - 포도주 시식 HTML 삽입 미리보기할 수 없는 소스 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규칙이 있다. 포도주 잔을 선택하면 그 잔에 들어있는 포도주는 모두 마셔야 하고, 마신 후에는 원래 위치에 다시 놓아야 한다. 연속으로 놓여 있는 3잔을 모두 마실 수는 없다. 효주는 될 수 있는 대로 많은 양의 포도주를 맛보기 위해서 어떤 포도주 잔을 선택해야 할지 고민하고 있다. 1부터 n까지의 번호가 붙어 있는 n개의 포도주 잔이 순서대로 테이블 위에 놓여 있고, 각 포도주 잔에 들어있는 포도주의 양이 주어졌을 때, 효주를 도와 가장 많은 양의 포도주를 마실 수 있도록 하는 .. 2024. 1. 3.
[백준/Python] 10844번 - 쉬운 계단 수 HTML 삽입 미리보기할 수 없는 소스 45656이란 수를 보자. 이 수는 인접한 모든 자리의 차이가 1이다. 이런 수를 계단 수라고 한다. N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구해보자. 0으로 시작하는 수는 계단수가 아니다. HTML 삽입 미리보기할 수 없는 소스 첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 100보다 작거나 같은 자연수이다. HTML 삽입 미리보기할 수 없는 소스 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. HTML 삽입 미리보기할 수 없는 소스 계단수의 특성을 생각하면 쉬운 문제다. 계단수는 연속적이여야 하므로 N번째 자리에 1이라는 수가 오기 위해서는 N-1번째 자리에는 0또는 2가 와야만 한다. 그러므로 N번째 자리가 1.. 2024. 1. 3.
[백준/Python] 1463 - 1로 만들기 HTML 삽입 미리보기할 수 없는 소스 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. HTML 삽입 미리보기할 수 없는 소스 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. HTML 삽입 미리보기할 수 없는 소스 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. HTML 삽입 미리보기할 수 없는 소스 1부터 N까지 리스트를 전부 채워서 최소 횟수를 저장해서 풀었다. 좀 더 시간을 줄이기 위해서는 N에서 1까지 역순으로 수를 구하거.. 2024. 1. 3.
[백준/Python] 2580번 - 스도쿠 HTML 삽입 미리보기할 수 없는 소스 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루어진 정사각형 판 위에서 이뤄지는데, 게임 시작 전 일부 칸에는 1부터 9까지의 숫자 중 하나가 쓰여 있다. 나머지 빈 칸을 채우는 방식은 다음과 같다. 각각의 가로줄과 세로줄에는 1부터 9까지의 숫자가 한 번씩만 나타나야 한다. 굵은 선으로 구분되어 있는 3x3 정사각형 안에도 1부터 9까지의 숫자가 한 번씩만 나타나야 한다. 위의 예의 경우, 첫째 줄에는 1을 제외한 나머지 2부터 9까지의 숫자들이 이미 나타나 있으므로 첫째 줄 빈칸에는 1이 들어가야 한다. 또한 위쪽.. 2024. 1. 3.
[백준/Python] 9663번 - N-Queen HTML 삽입 미리보기할 수 없는 소스 N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오 HTML 삽입 미리보기할 수 없는 소스 첫째 줄에 N이 주어진다. (1 ≤ N < 15) HTML 삽입 미리보기할 수 없는 소스 첫째 줄에 퀸 N개를 서로 공격할 수 없게 놓는 경우의 수를 출력한다. HTML 삽입 미리보기할 수 없는 소스 시간 초과로 인해 pypy로 풀었다. 체스판의 크기 N이 주어지면 길이가 N인 리스트를 만든다. 리스트의 인덱스 i(0~N-1)를 체스판의 행이라 생각하고 i번째 행에 몇번째 칸에 퀸이 들어갈 수 있는지를 비교해 리스트에 저장해가며 탐색했다. 퀸이 놓인 칸으로.. 2024. 1. 3.
[백준/Python] 2304번 - 창고 다각형 HTML 삽입 미리보기할 수 없는 소스 N 개의 막대 기둥이 일렬로 세워져 있다. 기둥들의 폭은 모두 1 m이며 높이는 다를 수 있다. 이 기둥들을 이용하여 양철로 된 창고를 제작하려고 한다. 창고에는 모든 기둥이 들어간다. 이 창고의 지붕을 다음과 같이 만든다. 지붕은 수평 부분과 수직 부분으로 구성되며, 모두 연결되어야 한다. 지붕의 수평 부분은 반드시 어떤 기둥의 윗면과 닿아야 한다. 지붕의 수직 부분은 반드시 어떤 기둥의 옆면과 닿아야 한다. 지붕의 가장자리는 땅에 닿아야 한다. 비가 올 때 물이 고이지 않도록 지붕의 어떤 부분도 오목하게 들어간 부분이 없어야 한다. 그림 1은 창고를 옆에서 본 모습을 그린 것이다. 이 그림에서 굵은 선으로 표시된 부분이 지붕에 해당되고, 지붕과 땅으로 둘러싸인 .. 2024. 1. 3.
반응형