본문 바로가기

728x90

문제풀이/C++

(28)
[C++] 가장 많이 사용된 자릿수 [목적] 자연수 N이 입력되면 N이 가지고 있는 자릿수 중 가장 많이 사용된 숫자를 출력한다. 단, 가장 많이 사용된 숫자가 여럿일 경우 가장 큰 수를 출력한다. 또한 N의 길이는 100자를 넘지 않는다. [입력예제] 1230565625 [출력예제] 5 자연수 '1230565625'의 자릿수 중 0은 1개, 1은 1개, 2는 2개, 3은 1개, 5는 3개, 6은 2개로 5가 가장 많으니 5를 출력한다. [코드] #include using namespace std; int main(void) { int cnt[10]={0}, a = 0, res=0, max = -2147000000; string num; cin >> num; for(int i=0; i
[C++] 숫자의 총 개수 (small) [목적] 자연수 N을 입력받으면 1부터 N까지의 자연수를 종이에 적을 때 각 숫자는 몇 개 쓰였는지 출력한다. ※ N(3 num; //입력받은 수 부터 시작하여 숫자를 하나씩 줄여나가며 반복문 실행 for(int i=num; i>0; i--){ //현재 숫자의 자리수 계산하여 cnt를 증가 for(int j=i; j>0; j/=10) cnt++; } cout
[C++] 자릿수의 합 [목적] 입력 하고 싶은 개수를 먼저 입력 한 후, 해당 개수만큼 숫자를 입력받아 각 숫자들의 자릿수를 더해 가장 큰 합이 나온 숫자를 출력한다. 단, 자릿수를 더한 값이 가장 큰 숫자가 여럿일 경우 숫자 중 가장 큰 수를 출력한다. [입력예제] 5 125 15232 79 1325 97 [출력예제] 97 5개를 입력받고 나면 그 중 자릿수 합이 가장 큰 숫자를 찾는다. 자릿수 합이 가장 큰 숫자는 '79'와 '97'이다. 이 두 수 중 더 큰 수는 '97'이기에 '97'을 출력한다. [코드] #include using namespace std; //자릿수를 더하는 함수 int digit_sum(int x){ int num = 0; //받아온 x(i)와 10을 나눈 나머지를 num에 저장 후 x(i)의 일..
[C++] 모두의 약수 [목적] 자연수 N을 입력하면 1부터 N까지의 숫자들의 약수의 개수를 출력한다. [입력 예제] 8 [출력 예제] 1 2 2 3 2 4 2 4 8을 입력하면 1부터 8까지의 숫자들의 약수의 개수를 출력한다. 이때 제한시간은 1초안에 출력 될 수 있도록 한다. [코드 1] #include using namespace std; int main(void) { int num, cnt = 0; cin >> num; for(int i=1; i
[C++] 올바른 괄호 [목적] 괄호를 입력 받아 올바른 괄호면 "YES", 올바르지 않으면 "NO"를 출력한다. [입력 예제 1] (()(()))(() [출력 예제 1] NO [입력 예제 2] ()()(()()) [출력 예제 2] YES 괄호를 입력 받은 후 오른쪽 괄호와 왼쪽 괄호의 순서에 맞춰 짝이 맞게 나올 경우에는 YES를 출력하고 그렇지 않은 경우는 NO를 출력해준다. [필요지식] Stack push() pop() top() [코드] #include #include #include using namespace std; int main(void) { string str; stack s; cin >> str; //문자열의 길이만큼 반복문 실행 for(int i=0; i
[C++] 영어단어 복구 [목적] 대/소문자와 공백이 들어간 영어 단어를 공백을 제거한 소문자 단어로 출력한다. [입력 예제] bE au T I fu L [출력 예제] beautiful [필요 지식] getline 공백이 포함된 문자열을 입력받을 수 있게 해준다. std::getline(isteam객체, string변수, delimitChar(default = '\n')) std::cin.getline(char배열, 배열에 저장 될 최대 문자의 개수, delimitChar) [코드] #include #include using namespace std; int main(void) { char str[100], temp[100]; int a=0; //공백을 포함한 문자배열 입력 cin.getline(str, 100); //배열 길이..
[C++] 숫자만 추출 [목적] 문자와 숫자가 섞여있는 문자열을 입력하면 그 중 숫자만 추출하여 그 순서대로 자연수를 만들어 그 자연수와 자연수의 약수 개수를 출력한다. [입력예제] g0en2Ts8eSoft [출력예제] 28 6 문자열 'g0en2Ts8eSoft'을 입력받으면 그 안의 [0, 2, 8] 숫자만 찾아 자연수로 만든다. 이때, 맨 앞자리 수가 '0'인 경우 '0'은 무시하게 된다. 숫자만 찾아 해당 숫자를 출력해 주고 난 후 28의 약수는 [1, 2, 4, 7, 14, 28]로, 총 6개라고 출력해준다. ※ ASCII 코드에 대한 이해를 하고 나면 쉽게 문제 풀이가 가능하다. [코드] #include #include //strlen using namespace std; int main(void) { char str..
[C++] 나이 계산 [목적] 주민등록번호를 입력 받은 후 나이와 성별을 출력한다. 뒷자리의 첫 번째 수가 1이면 1900년대생 남자, 2이면 1900년대생 여자, 3이면 2000년대생 남자, 4이면 2000년대생 여자이다. [입력 예제 1] 780316-2376152 [출력 예제 1] 42 W [입력 예제 2] 061102-3575393 [출력 예제 2] 14 M [코드] #include #include //substr #include //atoi using namespace std; int main(void) { string man; cin >> man; string cut = man.substr(0,2); int age = atoi(cut.c_str()); //stdlib.h cut = man.substr(7,1); i..

728x90
반응형