목록Computer Science/Algorithm (244)
DHistory
문제 2777번: 숫자 놀이 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 양의 정수 N이 주어진다. (1
문제 2790번: F7 권위를 자랑하는 레이싱 대회 F7이 열릴 예정이다. F7은 드라이버의 순위가 자주 바뀌기 때문에 사람들에게 인기가 아주 많다. 상근이는 F7 레이싱의 엄청난 팬이지만, 마지막 레이싱과 중간고사 www.acmicpc.net 풀이 """ 마지막 레이싱을 제외한 나머지 레이싱 모두 종료 F7의 우승자는 각 레이싱을 통해서 얻은 점수의 합이 가장 높은 사람이 우승 (동점인 경우 전부 우승자) 마지막 레이싱에서 1등을 한 사람은 N점을 얻고 2등은 N-1... N등은 1점을 얻는다. 각 레이싱에서 두 드라이버의 등수가 같은 경우는 없다. 우승할 가능성이 있는 사람의 수를 구하시오. 8 4 = 12 9 3 = 12 10 2 = 12 8 1 = 9 12 5 = 17 14 4 = 18 14 3 ..
문제 14247번: 나무 자르기 영선이는 나무꾼으로 나무를 구하러 오전에 산에 오른다. 산에는 $n$개의 나무가 있는데, 영선이는 하루에 한 나무씩 $n$일 산에 오르며 나무를 잘라갈 것이다. 하지만 이 산은 영험한 기운이 있 www.acmicpc.net 풀이 """ 산에는 n개의 나무가 있다. 영선이는 하루에 한 나무씩 n일 산에 오르며 나무를 자른다. 나무들은 매우 빠르게 자란다. 나무의 처음 길이와 하루에 자라는 양이 주어졌을 때, 영선이가 얻을 수 있는 최대 나무양을 구하시오. 자른 이후에도 나무는 0부터 다시 자라기 때문에 같은 나무를 여러 번 자를 수 있다. === example === 1 3 2 4 6 2 7 3 4 1 3 + 7 * 4 = 31 4 + 4 * 3 = 16 2 + 3 * 2 ..
문제 15729번: 방탈출 첫째 줄에 N(1 ≤ N ≤ 1,000,000)가 주어지고 둘째 줄에는 쪽지에 적혀 있는 N자리의 수가 빈 칸을 사이에 두고 주어진다. www.acmicpc.net 풀이 """ 1. 일렬로 놓여진 N개의 버튼이 모두 불이 꺼진 상태로 있다. 2. 0 또는 1로 구성되어 있는 N자리 수가 적힌 쪽지가 있다. 3. 0: 꺼짐, 1: 켜짐 4. 누르는 경우 0 -> 1, 1 -> 0 5. 버튼을 누르면 그 버튼 뿐만이 아닌 오른쪽 두 개의 버튼도 같이 눌린다. 불이 꺼진 상태에서 버튼을 최소로 눌러서 쪽지와 똑같은 상태로 만들어야한다. 7 1010101 0000000 1110000 1001000 1010100 1010101 0 1 10 -> 11 / 10 11 -> 11 100 ->..
문제 16112번: 5차 전직 메이플스토리 뉴비 키파가 드디어 레벨 200을 달성하고 5차 전직이라는 시스템을 이용해 캐릭터를 더욱 강력하게 만들려고 합니다. 5차 전직을 하려면 먼저 퀘스트를 통해 아케인스톤이라는 아 www.acmicpc.net 풀이 """ n개의 아케인스톤 / 개당 5억 i번째 퀘스트를 진행하면 ai의 경험치와 i번째 아케인스톤이 주어집니다. 보상 경험치를 받을 때 ai의 경험치가 추가됩니다. 최대 경험치 제한을 없앰. k개의 아케인스톤이 동시에 활성화될 수 있도록 변경 === example === 2번째 퀘스트를 진행해 100,000 경험치 주어진 경우 1, 3번째 아케인스톤에 100,000 경험치가 추가 2번째 아케인스톤 획득 경험치: 0 3 2 100 300 200 첫 번째 퀘스..
문제 21314번: 민겸 수 민겸 수 하나가 주어진다. 민겸 수는 대문자 M과 K로만 이루어진 문자열이며, 길이는 3,000을 넘지 않는다. www.acmicpc.net 풀이 """ 민겸 숫자: 0 이상의 정수 N에 대해 [10^N 또는 5 x 10^N] 꼴의 십진수 대문자 M과 K로 이루어진 문자열로 표기 10의 거듭제곱 or 10의 거듭제곱 * 5 1: M 5: K 10: MM 50: MK 505500: MKKMMK 변환될 수 있는 십진수 중 가장 큰 값과 가장 작은 값 """ text = input() def solution(text): max_value = '' min_value = '' count = 0 for value in text: if value == 'M': count += 1 else..
문제 2885번: 초콜릿 식사 학교 근처 편의점에 새 초콜릿이 들어왔다. 이 초콜릿은 막대 모양이고, 각 막대는 정사각형 N개로 이루어져 있다. 초콜릿의 크기(정사각형의 개수)는 항상 2의 제곱 형태이다. 즉, 1, 2, 4, 8, 16, ... www.acmicpc.net 풀이 """ 막대는 정사각형 N개 초콜릿의 크기는 항상 2의 제곱 형태 (1, 2, 4, 8, 16 ...) K개 정사각형을 먹어야함. 나머지 초콜릿은 선영이를 준다. 항상 가운데로만 쪼개진다. D개 있는 막대는 D/2개 막대 두 조각으로 쪼개진다. K개 정사각형을 만들기 위해서 몇 번의 초콜릿을 쪼개야 하는지와 사야하는 가장 작은 초콜릿의 크기는? """ k = int(input()) def solution(k): binary = ..
문제 11501번: 주식 입력의 첫 줄에는 테스트케이스 수를 나타내는 자연수 T가 주어진다. 각 테스트케이스 별로 첫 줄에는 날의 수를 나타내는 자연수 N(2 ≤ N ≤ 1,000,000)이 주어지고, 둘째 줄에는 날 별 주가를 나타 www.acmicpc.net 풀이 """ 1. 주식 하나를 산다. 2. 원하는 만큼 가지고 있는 주식을 판다. 3. 아무것도 안한다. 날 별로 주식의 가격을 알려주었을 때, 최대 이익이 얼마나 되는지 계산하시오. === example == 3일 10, 7, 6 (감소하므로 최대 이익 0) 3, 5, 9 (증가하므로 최대 이익 12가 맞지 않나..? 3, 5에 사서 9에 팔기 10) 5 1 1 3 1 2 1 1 3 => 2원 2원 1 2 => 1원 """ import sys ..
문제 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 풀이 """ 양수, +, - 로 식을 만들었다. 적절히 괄호를 쳐서 값을 최소로 만드시오. 0-9, +, - - 가장 처음과 마지막 문자는 숫자이다. - 두 개 이상의 연산자가 나타나지 않는다. - 수는 0으로 시작할 수 있다. """ text = input() def solution(text): # -뒤에 나오는 숫자에 괄호를 치면 된다. text = text.split('-') answer = sum(map(int, text[0].split('+'..
문제