본문 바로가기

728x90

문제풀이/C++

(28)
[C++] 3의 개수 구하기 [문제] 자연수 N이 입력되면 1부터 N까지의 자연수를 나열 할 때 3의 개수가 총 몇개인지 출력하는 프로그램을 만들어라. [입력예제] 15 [출력예제] 2 1부터 15까지는 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1, 5으로 3의 개수는 총 2개이다. [코드 1] #include #include using namespace std; int main(int argc, const char * argv[]) { int n, count = 1, num, tmp; //1 cin >> n; //3 if(n>=13){ for(int i=13; i0){ tmp = num%10; if(tmp==3) count++; num/=10; } } } //4 if(n..
[C++] N!에서 0의 개수 [문제] 자연수 N을 입력받으면 N! 값에서 연속적으로 '0'이 몇 개 있는지 구하는 프로그램을 작성하시오. [입력예제] 12 [출력예제] 2 12!은 '479001600'으로 연속적으로 0이 2번 사용되었기에 2를 출력하였다. [코드] #include #include using namespace std; int main(int argc, const char * argv[]) { int n, num, div, two, five, res; //1 cin >> n; //2 for(int i=2; i
[C++] N!의 표현법 [문제] 임의의 N에 대하여 N! 은 1부터 N까지의 곱을 의미한다. N! 을 소인수 분해하여 각 숫자가 몇 번 사용되었는지 사용된 숫자만 작은 수부터 사용 횟수를 출력하는 프로그램이다. [입력 예제] 5 [출력 예제] 5! = 3 1 1 5! = 5 × 4 × 3 × 2 × 1= 120 120을 소인수 분해하게 되면 2 × 2 × 2 × 3 × 5로, 2는 3번, 3은 1번, 5는 1번 사용되었으므로, 5! = 3 1 1이라고 출력하였다. [코드] #include #include using namespace std; int main(int argc, const char * argv[]) { int n, num, div, rest; //1 cin >> n; vector res(n+1); //2 for(i..
[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..

728x90
반응형