목록Computer Science (228)
DHistory
문제 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('+'..
문제
문제 20365번: 블로그2 neighbor 블로그를 운영하는 일우는 매일 아침 풀고 싶은 문제를 미리 정해놓고 글을 올린다. 그리고 매일 밤 각각의 문제에 대하여, 해결한 경우 파란색, 해결하지 못한 경우 빨간색으로 칠한 www.acmicpc.net 풀이 import re n = int(input()) text = input() def solution(text): # 연속으로 나온 문자는 하나의 문자로 변경한다. for value in ['B', 'R']: standard = '(' + value + '){2,}' text = re.sub(r'{}'.format(standard), value, text) # 둘 중 많은 색으로 칠하기(1) + 나머지 칠하기 return 1 + min(text.count..
문제 5545번: 최고의 피자 첫째 줄에 토핑의 종류의 수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 도우의 가격 A와 토핑의 가격 B가 주어진다. (1 ≤ A, B ≤ 1000) 셋째 줄에는 도우의 열량 C가 주어진다. (1 ≤ C ≤ 10000) 다음 줄 www.acmicpc.net 풀이 """ 최고의 피자란, 피자가게에서 주문할 수 있는 피자 중 1원당 열량이 가장 높은 피자를 의미한다. 토핑 N에게서 여러 종류를 선택해서 주문할 수 있다. - 같은 종류의 토핑을 2개 이상 선택할 수는 없다. - 토핑을 전혀 선택하지 않을 수도 있다. A: 도우의 가격 B: 토핑의 가격 K: 토핑의 개수 피자의 가격 = A + B * k 피자의 열량 = 도우와 토핑의 열량의 합 1원당 열량을 출력 (소수점..
문제 1448번: 삼각형 만들기 첫째 줄에 빨대의 개수 N이 주어진다. N은 3보다 크거나 같고, 1,000,000보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 빨대의 길이가 한 줄에 하나씩 주어진다. 빨대의 길이는 1,000,000보다 www.acmicpc.net 풀이 """ N: 빨대의 개수 3개의 빨대를 선택 => 삼각형을 만들 수 있다면, 세 변의 길이의 합의 최댓값 삼각형 조건 가징 긴 변의 길이가 다른 두 변의 길이의 합보다 작은 경우 """ import sys n = int(sys.stdin.readline().rstrip()) edges = [] for _ in range(n): edges.append(int(sys.stdin.readline().rstrip())) def solu..
문제 19941번: 햄버거 분배 기다란 벤치 모양의 식탁에 사람들과 햄버거가 아래와 같이 단위 간격으로 놓여 있다. 사람들은 자신의 위치에서 거리가 $K$ 이하인 햄버거를 먹을 수 있다. 햄버거 사람 햄버거 사람 햄버거 사 www.acmicpc.net 풀이 """ 자신의 위치에서 거리가 K이하인 햄버거를 먹을 수 있다. N: 식탁의 길이 K: 햄버거를 선택할 수 있는 거리 햄버거를 먹을 수 있는 사람의 최대 수? HHPPP HPHPHPHP PHPPP """ n, m = map(int, input().split()) table = list(input())[:n] def solution(m, table): for i in range(len(table)): if table[i] == 'P': for j in ..
문제 2012번: 등수 매기기 첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 500,000) 둘째 줄부터 N개의 줄에 걸쳐 각 사람의 예상 등수가 순서대로 주어진다. 예상 등수는 500,000 이하의 자연수이다. www.acmicpc.net 풀이 """ 학생들은 N명 중에 몇 등 할 지 예상 등수를 적었다. 각 사람이 제출한 에상 등수를 바탕으로 임의로 등수를 매기기로 했다. A등으로 예상하였는데 실제 등수가 B등이 될 경우 불만도 abs(A-B)이다. 불만도의 총 합의 최소는? 예상 순으로 정렬한다. 1 1 2 3 5 0 1 1 1 0 """ import sys n = int(sys.stdin.readline().rstrip()) rank = [] for _ in range(n): rank.appe..
문제 18310번: 안테나 첫째 줄에 집의 수 N이 자연수로 주어진다. (1≤N≤200,000) 둘째 줄에 N채의 집에 위치가 공백을 기준으로 구분되어 1이상 100,000이하의 자연수로 주어진다. www.acmicpc.net 풀이 """ 일직선 상의 집들이 있다. 한 개의 안테나를 설치하는데 효율성을 위해 안테나로부터 모든 집까지의 거리의 총 합이 최소가 되도록 설치하려고 한다. 안테나는 집이 위치한 곳에만 설치할 수 있고, 동일한 위치에 여러 개의 집이 존재하는 것이 가능하다. === example === N = 4 house = 1, 5, 7, 9 5에 위치 (4 + 0 + 2+ 4) = 10 => 중간에 위치하면 된다. 중간에 위치한 집이 왼쪽으로 가는 경우 왼쪽 집과 가까워지고 오른쪽 집과 동일..