[ 문제 ] 자랑스러운 부산대학교의 새내기인 산지니는 일직선상의 등굣길을 가로막고 있는 정체불명의 첨탑들을 밀어 넘어뜨려서 부수기로 하였다. 첨탑은 일렬로 줄지어 서 있으며 산지니가 첨탑을 앞에서 밀면 뒤로 밀려 넘어진다. 밀려 넘어지는 첨탑의 높이가 바로 그다음 첨탑의 높이보다 클 때만 그다음 첨탑도 밀려 넘어진다. 산지니가 모든 첨탑을 밀어 넘어뜨리기 위해서 몇 번을 밀어야 하는지 구하여라. 산지니는 반드시 앞으로만 이동하며 길을 우회하지 않는다. [ 코드 ] int n = int.Parse(Console.ReadLine()); int[] a = Array.ConvertAll(Console.ReadLine().Split(), int.Parse); int count = 1; for (int i = 1;..
[ 문제 ] 《노 땡스!》는 3부터 35까지의 정수가 쓰인 수 카드를 이용하여 플레이할 수 있는 보드게임입니다. 수 카드를 경매를 통해서 낙찰받으며, 최종적으로 가지고 있는 수 카드를 이용하여 다음과 같이 점수를 계산합니다. 1. 정수들을 오름차순으로 정렬한 뒤, 이웃한 수끼리의 차가 1인 구간들로 그룹을 나눕니다. 2. 각 그룹별로 가장 작은 수를 모두 합한 값이 점수가 됩니다. 예를 들어 가지고 있는 수 카드가 6, 7, 10, 12, 13, 14, 15, 20, 21, 22라면, [6,7], [10], [12,13,14,15], [20,21,22]의 4개의 그룹으로 나뉘며, 점수는 6+10+12+20=48점입니다. 가지고 있는 수 카드가 주어졌을 때 점수를 계산하는 프로그램을 작성하세요. [ 코드 ..
[ 문제 ] 이 대회의 운영진 중 한 명인 KSA 학생은 17시와 19시를 구별할 수 없다. 이는 당연하게도 17과 19가 모두 소수이기 때문일 것이다. 시간을 제대로 구별해서 KSA의 명예를 지키기 위해 정수 N을 입력받아서 소수가 아닌 N 이상의 정수를 아무거나 구해주자. [ 코드 ] using System; int N = int.Parse(Console.ReadLine()); int nonPrime = FindNonPrime(N); Console.Write(nonPrime); bool IsPrime(int n) { if (n
[ 문제 ] 사파리 투어를 나선 건덕이는 얼룩말에 관심이 많았다. 특히 얼룩말의 몸통에 검은 줄이 많을수록 얼룩말이 아름답다고 생각했다. 건덕이는 얼룩말들의 털 상태를 0과 1로 기록한다. 0은 털이 흰 부분을, 1은 털이 검은 부분을 의미한다. 검은 줄의 개수는 연속하는 검은 부분의 개수이다. 예를 들어, 건덕이가 한 얼룩말의 털 상태를 01101110101로 기록했다면, 이 얼룩말은 4개의 검은 줄을 가지고 있다. 건덕이는 모든 얼룩말에 대한 털 상태를 기록해 두었다. 건덕이가 생각하기에 가장 아름다운 얼룩말은 몇 개의 줄을 가졌고, 그런 얼룩말이 총 몇 마리가 있을까? [ 코드 ] string[] input = Console.ReadLine().Split(); int N = int.Parse(inp..
[ 문제 ] 곧 시계는 6시, 벌써 첫 번째 별이 보인다. 정N각형 모양의 하늘에는 몇 개의 별이 뜰 수 있을까? 정N각형의 꼭짓점의 개수 N이 주어졌을 때, 정N각형의 꼭짓점을 이어 만들 수 있는 서로 다른 별의 개수를 출력하여라. 별은 정N각형의 다섯 꼭짓점에 시계 방향으로 번호를 붙였을 때, 그 꼭짓점들을 1-3-5-2-4-1 순으로 연결한 것을 의미한다. 뒤집거나 돌려서 같은 모양이 나오는 별도 정N각형의 다른 꼭짓점을 이어 만든 별이라면 서로 다른 별이다. [ 코드 ] using System; using System.Numerics; int n = int.Parse(Console.ReadLine()); int k = 5; BigInteger result = Combination(n, k); Co..
[ 문제 ] 브실이는 하루라도 빨리 대회 출제 자격을 얻기 위해서 1000문제 해결을 목표로 매일 문제를 풀고 있다. 그러다 보니 다른 사람들의 푼 문제 수에 관심이 많다. 사람들은 “저는 총 1000문제 이상 해결하려면 하루에 5문제씩 최소 128일은 더 풀어야 해요”와 같이 자신이 몇 문제를 풀었는지 설명한다. 브실이는 이 말을 들을 때마다 상대방이 현재까지 몇 문제를 풀었는지 궁금해서 참을 수 없었다. 브실이를 도와 상대방이 푼 문제 수의 최솟값과 최댓값을 구해보자. [ 코드 ] using System; string[] input = Console.ReadLine().Split(); int N = int.Parse(input[0]); int M = int.Parse(input[1]); int K =..