목록전체 글 (271)
DHistory
문제 1105번: 팔 첫째 줄에 L과 R이 주어진다. L은 2,000,000,000보다 작거나 같은 자연수이고, R은 L보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 풀이 """ L과 R이 주어진다. L보다 크거나 같고, R보다 작거나 같은 자연수 중 8이 가장 적에 들어있는 수에 들어있는 8의 개수는? 108 208 각 자리수에서 8이 나오지 않을 수 있는지 확인 48880 38808 """ l, r = input().split() def solution(l, r): if len(r) > len(l): return 0 carry_bit = False answer = 0 for i, j in zip(l, r): if not carry_bit and ..
문제 15903번: 카드 합체 놀이 첫 번째 줄에 카드의 개수를 나타내는 수 n(2 ≤ n ≤ 1,000)과 카드 합체를 몇 번 하는지를 나타내는 수 m(0 ≤ m ≤ 15×n)이 주어진다. 두 번째 줄에 맨 처음 카드의 상태를 나타내는 n개의 자연수 a1, www.acmicpc.net 풀이 """ 자연수 n장 i번 카드에는 ai가 쓰여있다. 카드 합체 과정 1. x번 카드와 y번 카드를 골라 두 장에 쓰여진 수를 더한 값을 계산한다. (x != y) 2. 계산한 값을 x번 카드와 y번 카드 두 장 모두 덮어 쓴다. 총 m번 하면 놀이가 종료된다. m번 후 n장의 카드에 쓰여있는 수를 모두 더한 값이 이 놀이의 점수이다. 이 점수를 가작 작게 만드는 것이 놀이의 목표이다. 1 2 3 4 3 3 3 4 6..
문제 1080번: 행렬 첫째 줄에 행렬의 크기 N M이 주어진다. N과 M은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 행렬 A가 주어지고, 그 다음줄부터 N개의 줄에는 행렬 B가 주어진다. www.acmicpc.net 풀이 """ 행렬 A를 행렬 B로 바꾸는데 필요한 연산의 횟수의 최솟값을 구하시오. 행렬의 연산은 3x3 크기의 부분 행렬의 모든 원소를 뒤집는 것이다. 100 000 011 011 000 100 """ import sys n, m = map(int, sys.stdin.readline().rstrip().split()) matrix = [] for _ in range(n * 2): row = list(sys.stdin.readline().rstrip())[:m] matr..
문제 1946번: 신입 사원 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성 www.acmicpc.net 풀이 """ 1차 서류심사 / 2차 면접시험 다른 모든 지원자와 비교했을 때 서류심사 성적과 면접시험 성적 중 적어도 하나가 다른 지원자보다 떨어지지 않는 자만 선발 선발할 수 있는 신입사원의 최대 인원수 5 3 2 1 4 4 1 2 3 5 5 === 4 1 4, 2 3, 3 2, 4 1, 5 5 --- 7 3 6 7 3 4 2 1 4 5 7 2 5 6 1 === 3 o 1 4 x 2 5 x 3 6 o 4 2 x 5 7 o 6 1 x ..
문제 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 풀이 """ N개의 회의에 대하여 회의실 사용표를 만든다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져있다. 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. (시작 시간과 끝나는 시간이 동일한 경우 시작하자마자 끝나는 것으로 생각한다.) 0 6 1 4 2 13 3 5 3 8 5 7 5 8 6 10 8 11 8 12 12 14 1 4 7 7 4 7 3 7 5 7 6 7 """ import sys n = int(sys.stdin..