목록Computer Science (228)
DHistory
문제 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..
문제 2872번: 우리집엔 도서관이 있어 상근이는 컴퓨터 공학의 일인자가 되기 위해 책을 매우 많이 구매했다. 하지만, 집에 책장이 없어서 책을 탑처럼 쌓아놓고 있다. 오늘은 오랜만에 상근이가 집에서 휴식을 취하는 날이다. 상근 www.acmicpc.net 풀이 """ 책을 탑처럼 쌓아놓고 있다. 책을 알파벳 순서대로 정렬하려고 한다. 사전 순으로 앞에 있는 책은 가장 위에 놓고 가장 뒤에 있는 책은 가장 밑에 놓아야한다. - 책을 정렬할 때 사용할 수 있는 방법은 책 하나를 뺀 다음, 가장 위에 놓는 것이다. 1 3 4 2 5 2 3 4 1 5 2 3 4 5 1 1 3 2 5 6 4 """ import sys n = int(sys.stdin.readline().rstrip()) books = [] fo..
문제 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..