본문 바로가기

728x90

전체보기

(49)
[C++] 마라톤 [문제] KSEA 장거리 달리기 대회가 진행되어 모든 선수가 반환점을 넘었다. 각 선수의 입장에서 자 기보다 앞에 달리고 있는 선수들 중 평소 실력이 자기보다 좋은 선수를 남은 거리 동안 앞지르는 것은 불가능하다. 반대로, 평소 실력이 자기보다 좋지 않은 선수가 앞에 달리고 있으면 남은 거리 동안 앞지르는 것이 가능하다. 이러한 가정 하에서 각 선수는 자신이 앞으로 얻을 수 있는 최선의 등수를 알 수 있다. 각 선수의 평소 실력은 정수로 주어지는데 더 큰 값이 더 좋은 실력을 의미한다. 현재 달리고 있는 선수를 앞에서 부터 표시했을 때 평소 실력이 각각 2, 8, 10, 7, 1, 9, 4, 15라고 하면 각 선수가 얻을 수 있는 최선의 등수는 (같은 순서로) 각각 1, 1, 1, 3, 5, 2, 5, ..
[C++] 석차 구하기 [문제] 학생 수를 입력받고, 학생 수 만큼 점수를 입력받아 석차를 출력한다. 이때, 동점일 경우 같은 석차로 처리하며 다음 등수는 + 같은 석차를 받은 학생 수 이다. [입력예제] 5 90 85 92 95 90 [출력예제] 3 5 2 1 3 총 5명의 학생의 점수를 입력받았으며, 가장 높은 점수는 95점으로 네번째 학생 석차는 1등이다. 그 다음으로는 92점으로 세번째 학생은 2등, 90점을 받은 학생은 둘이므로 첫번째 학생과 다섯번째 학생은 공동 3등. 85점은 최하점으로 점수상에서는 네번째지만 3등 석차가 2명이었으므로 두번째 학생은 5등이 되었다. [코드] #include #include using namespace std; int main(int argc, const char * argv[]) ..
[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++] 연속 부분 증가수열 [문제] 수열의 길이를 입력받은 후 해당 수열의 숫자를 입력받아 연속적으로 증가하는 부분 수열의 최대 길이를 구하여 출력하는 프로그램을 작성하라. [입력 예제] 9 5 7 3 3 12 12 13 10 11 [출력 예제] 5 길이가 9인 수열을 위 입력 예제와 같이 입력받았다. 해당 수열에서는 [3, 3, 12, 12, 13] 구간이 연속적으로 증가하는 최대 길이이기에 5를 출력하였다. [코드] #include using namespace std; int main(int argc, const char * argv[]) { int n, max=0, res=1; //수열의 길이는 자기자신도 포함이니 res변수를 1로 초기화 시켜준다. /*1*/cin >> n; int a[n]; /*2*/for(int i=0;..
[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++] 카드게임 [목적] 0부터 9까지의 숫자가 표시된 카드를 가지고 A와 B가 게임을 한다. 두 사람의 카드의 숫자값을 입력 받은 후 각 라운드 마다 이긴 사람이 3점을 가져가게 되며, 비기는 경우에는 두 사람 모두에게 1점이 주어진다. 총 10라운드의 게임이 끝난 후 A와 B의 점수를 출력하며, 두 사람 중 승자를 출력하는 프로그램이다. 만약, 두 사람의 10라운드의 결과가 모두 비겼을 시 "D"라고 표시하며 승점만 같은 경우에는 마지막에 이긴 사람을 승자로 하여 출력한다. [입력예제] 4 5 6 7 0 1 2 3 9 8 1 2 3 4 5 6 7 8 9 0 [출력예제] 16 13 A A의 10라운드의 대결 카드는 윗줄에 입력받았으며, B의 10라운드 대결 카드는 아랫줄에 입력을 받았다. 각 라운드의 숫자를 비교하여 ..
[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; ..
[C++] 분노 유발자 [목적] 한 줄에 앉는 학생 수를 입력받은 후 학생 들의 키를 앞자리에 앉은 학생부터 입력받는다. 앉은 학생의 뒷 자리 학생들 보다 키가 큰 경우 분노유발자라 칭한다. 총 분노 유발자가 몇명인지 출력하는 프로그램이다. [입력예제] 10 56 46 55 76 65 53 52 53 55 50 [출력예제] 3 총 10명의 학생이 한 줄에 앉아있다. 제일 처음에 앉은 친구는 2, 3번째 앉은 친구보단 키가 크지만 그 이후의 친구보다는 키가 작아 분노유발자가 아니다. 하지만 76, 65, 55의 키를 가진 4, 5, 9번째 친구는 뒷자리 친구들 보다 키가 크기에 분노유발자이다. 분노유발자는 총 3명이므로 3을 출력한다. [코드 1] #include using namespace std; int main(int ar..

728x90
반응형