[ 문제 ] 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모두 뒤집는 것이다. 뒤집는 것은 1을 0으로, 0을 1로 바꾸는 것을 의미한다. 예를 들어 S=0001100 일 때, 전체를 뒤집으면 1110011이 된다. 4번째 문자부터 5번째 문자까지 뒤집으면 1111111이 되어서 2번 만에 모두 같은 숫자로 만들 수 있다. 하지만, 처음부터 4번째 문자부터 5번째 문자까지 문자를 뒤집으면 한 번에 0000000이 되어서 1번 만에 모두 같은 숫자로 만들 수 있다. 문자열 S가 주어졌을 때, 다솜이가 해야하는 행동의 최소 횟수를 출력하시오 [ 코드 ] 1. ..
Language
[ 문제 ] 서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까? [ 코드 ] 1. 내 코드 - 이진탐색 알고리즘 사용 StreamReader sr = new StreamReader(new BufferedStream(Console.OpenStandardInput())); StreamWriter sw = new StreamWriter(new BufferedStream(Console.OpenStandardOutput())); long n = long.Parse(sr.ReadLine()); long left = 1; long right = n; long result = 0; while (left
[ 문제 ] $N$장의 카드가 좌우 일렬로 놓여있다. 각 카드에는 하나의 정수가 적혀있는데, 왼쪽에서 i번째 카드에 적혀있는 정수는 A_i다. (1 ≤ i ≤ N) 여러분은 N장의 카드 중 몇 장을 골라 제거할 수 있다. 이때, 제거되지 않은 카드의 순서는 유지된다. 예를 들어, N = 5, A = [3, 1, 4, 1, 5]라고 하자. 여러분이 두 번째와 다섯 번째 카드를 제거한다면, 남은 카드들에 적혀있는 수들은 왼쪽부터 차례대로 3,4,1이 된다. 즉, 남은 카드들 중 왼쪽에서 세 번째 카드에 적혀있는 수는 1이 된다. 몇 장의 카드를 골라 제거한 후, 남은 카드들 중 왼쪽에서 x번째 카드에 적혀있는 수가 정확히 x라면, 그 카드를 제자리 카드라고 부르자. 모든 남은 카드가 제자리 카드라면, 제자리..
[ 문제 ] 마법소녀인 마도카는 너무나도 고양이를 좋아하는 나머지 마법을 이용하여 고양이 N마리를 집에서 키우기로 결심했다! 마도카는 한 번의 행동에서 다음 2가지 마법 중 하나를 선택하여 사용한다. 처음에는 마도카의 집에 고양이가 존재하지 않는다. - 생성 마법: 고양이 1마리를 마도카의 집에 생성한다. - 복제 마법: 마도카의 집에 있는 고양이 일부 또는 전부를 대상으로 하여 복제한다. (즉, 만약 현재 마도카의 집에 고양이가 k마리 존재한다면, 0마리 이상 k마리 이하의 고양이를 마도카의 집에 추가할 수 있다.) 마도카는 위의 2가지 마법을 적절히 사용하여, 최소의 행동 횟수로 마도카의 집에 정확히 N마리의 고양이가 있도록 만들고 싶다. 계산을 어려워하는 마도카를 위해 최소의 행동 횟수를 계산해주자..
[ 문제 ] 충남대학교 공대 5호관에는 1번부터 N번까지 번호가 매겨진 N개의 강의실이 있다. 학생들은 강의실 예약 시스템을 통해 원하는 강의실을 예약한 후에 이용할 수 있다. 강의실을 예약하기 위해서는 이용하려는 강의실의 번호 k와 이용 시작 시각과 끝 시각 ,s,e를 예약 시스템에 전송해야 한다. 어느 날, 예약 시스템에 M개의 예약 요청이 주어졌다. 예약 요청은 이용 시작 시각 s가 임박한 순으로 주어지고, 이용 시작 시각이 같은 예약은 없다. 예약 시스템은 예약 요청을 순서대로 확인하는데, 어떤 예약이 기존에 같은 강의실에 대해 수락한 예약과 겹치지 않는다면 그 예약을 수락하고 그렇지 않다면 거부한다. 단, 이용 끝 시각과 이용 시작 시각이 같은 두 예약은 겹친 것이 아니다. M개의 예약 요청이 ..
[ 문제 ] JOI 상점가에서는 포인트 카드 서비스를 실시하고 있다. 각 포인트 카드에는 도장을 찍을 수 있는 칸이 총 2N개 있어, 상품을 구매하면 뽑기를 해서 결과에 따라 '당첨' 또는 '꽝' 도장이 찍힌다. 한 칸에 두 번 이상 도장을 찍을 수는 없다. 2N개 중 N개 이상의 칸에 당첨 도장이 찍힌 포인트 카드는 경품과 교환할 수 있다. 또, 한 칸에 찍힌 도장을 1엔을 내고 다른 도장으로 바꿀 수 있다. JOI 군은 2N개 칸을 다 채운 포인트 카드를 M장 가지고 있다. i번째 포인트 카드에는 A_i개의 당첨 도장과, B_i개의 꽝 도장이 찍혀 있다. JOI 군은 M-1개 이상의 경품을 가지려고 한다. 이에 필요한 비용의 최솟값을 구하라. [ 코드 ] 1. 내 코드 StreamReader sr =..