[C++] 마라톤
[문제] KSEA 장거리 달리기 대회가 진행되어 모든 선수가 반환점을 넘었다. 각 선수의 입장에서 자 기보다 앞에 달리고 있는 선수들 중 평소 실력이 자기보다 좋은 선수를 남은 거리 동안 앞지르는 것은 불가능하다. 반대로, 평소 실력이 자기보다 좋지 않은 선수가 앞에 달리고 있으면 남은 거리 동안 앞지르는 것이 가능하다. 이러한 가정 하에서 각 선수는 자신이 앞으로 얻을 수 있는 최선의 등수를 알 수 있다. 각 선수의 평소 실력은 정수로 주어지는데 더 큰 값이 더 좋은 실력을 의미한다. 현재 달리고 있는 선수를 앞에서 부터 표시했을 때 평소 실력이 각각 2, 8, 10, 7, 1, 9, 4, 15라고 하면 각 선수가 얻을 수 있는 최선의 등수는 (같은 순서로) 각각 1, 1, 1, 3, 5, 2, 5, ..
[C++] Jolly Jumpers
[문제] N개의 정수로 이루어진 수열을 입력받아 서로 인접해 있는 두 수의 차가 1에서 N-1까지의 값을 모두 갖게 되는 수열을 Jolly Jumper라고 한다. 입력받은 수열이 Jolly Jumper가 맞는지 아닌지를 출력해주는 프로그램이다. [입력 예제] 5 1 4 2 3 7 [출력 예제] YES 5개의 숫자 [1, 4, 2, 3, 7]을 입력받았다. 각각 인접한 숫자의 차는 [3, 2, 1, 4]로 1부터 4까지의 숫자를 모두 갖게 되어 Jolly Jumper의 조건에 맞았다. 그렇기에 YES를 출력하였다. [코드] #include #include //abs() using namespace std; int main(int argc, const char * argv[]) { int n, pre, no..
[C++] 온도의 최대값
[목적] N일간의 온도를 입력받아 K일 간격으로 온도를 더한 값(온도) 중 가장 큰 값을 출력하는 프로그램이다. [입력 예제] 10 2 3 -2 -4 -9 0 3 7 13 8 -3 [출력 예제] 21 10일 동안의 온도를 [3, -2, -4, -9, 0, 3, 7, 13, 8, -3]과 같이 측정하였으며, 이틀간의 온도를 더하여 가장 큰 온도를 알아내야 한다. 3 + (-2) = 1 -2 + (-4) = -6 . . . 7 + 13 = 20 13+8 = 21 8 + (-3) = 5 와 같은 더한 결과를 확인할 수 있으며, 이 중 가장 큰 합은 13과 8을 더한 21이기에 21을 출력한다. [코드 1] #include using namespace std; int main(int argc, const cha..
[C++] 가위 바위 보
[목적] A, B 두 사람이 가위바위보를 한다. 먼저 가위바위보를 할 횟수를 정한 후, 횟수만큼 A가 가위, 바위, 보를 정한 후 B도 정한다. 그 후 결과를 출력하는 프로그램이다. 가위, 바위, 보의 정보는 1: 가위, 2: 바위, 3: 보로 정하며 두 사람이 비길 시의 결과는 D로 출력한다. [입력예제] 5 2 3 3 1 3 1 1 2 2 3 [출력예제] A B A B D 총 5번의 가위바위보를 진행한다고 하였으며, A의 가위바위보의 값(2, 3, ,3, 1, 3)과 B의 가위바위보의 값(1, 1, 2, 2, 3)을 입력해주었다. 가위, 바위, 보의 승리/패배/비김의 조건에 맞춰 결과를 위와 같이 이긴 사람과 비긴경우에 대해 출력하였다. [코드] #include using namespace std; ..