N개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 수를출력하는 프로그램을 작성하세요. 예를 들어 32를 뒤집으면 23이고, 23은 소수이다. 그러면 23을 출력한다. 단 910을 뒤집으면, 19로 숫자화해야한다. 첫 자리부터의 연속된 0은 무시한다. 뒤집은 함수인 int reverse(int x)와 소수인지 확인하는 함수 bool isPrime(int x)를 반드시 작성한다. 입력 5 32 55 62 3700 250 출력 23 73 #include using namespace std; int reverse(int x){ int res, tmp; while(x>0){ tmp = x % 10; res = res * 10 + tmp; x = x / 10; } return res; }..
전체 글
N자리의 자연수가 입력되면 입력된 자연수의 자릿수 중 가장 많이 사용된 숫자를 출력하는 프로그램을 작성하세요. 예를들어 1230565625라는 자연수가 입력되면 5가 3번 사용되어 가장 많이 사용된 숫자입니다. 답이 여러 개일 경우 그 중 가장 큰 수를 출력하세요. 입력 첫 줄에 자연수가 입력됩니다. 자연수의 길이는 100을 넘지 않습니다. 1230565625 출력 가장 많이 사용된 자릿수를 출력합니다. 5 #include using namespace std; int ch[10]; // 0~9까지 카운트 int main(void){ int i, digit, res, max = -2147000000; char a[101]; // 100자리 자연수 cin >> a; for(int i = 0; a[i] != ..
자연수 n이 입력되면 1부터 n까지의 자연수를 종이에 적을 때, 각 숫자는 몇 개 쓰였을까요? 예를 들어 1~15까지는 총 21개가 쓰였음을 알 수 있습니다. 자연수 n이 입력되면 1부터 n까지 각숫자는 몇 개가 사용되었는지를 구하는 프로그램을 작성하세요. 입력 첫 번째 줄에는 자연수 n이 주어진다. 15 출력 첫 번째 줄에 숫자의 총 개수를 출력한다. 21 강의 풀이 #include using namespace std; int main(void){ int n, sum = 0, c = 1, d = 9, res = 0; cin >> n; while(sum+d < n){ res = res + (c*d); sum = sum + d; c++; d = d*10; } res = res + ((n-sum) * c);..
자연수 n이 입력되면 1부터 n까지의 자연수를 종이에 적을 때 각 숫자는 몇 개 쓰여있을가요? 예를 들어 1~15까지는 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5으로 총 21개가 입력된다. 자연수 n이 입력되면 1부터 n까지 각 숫자는 몇 개가 사용되었는지를 구하는 프로그램을 작성하세요. 입력 첫 번째 줄에는 자연수 N(3 num; for(int i = 1; i 0){ tmp = tmp / 10; cnt++; } } cout
N개의 자연수가 입력되면 각 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수를 출력하는 프로그램을 작성하세요. 각 자연수의 자릿수의 합을 구하는 함수를 int digit_sum(int x)를 꼭 작성해서 프로그래밍하세요. 입력 첫 줄에 자연수의 개수가 주어지고, 그 다음줄에 N개의 자연수가 주어진다. 각 자연수의 크기는 10,000,000를 넘지 않는다. 5 125 15232 79 1325 97 출력 자릿수의 합이 최대인 자연수를 출력한다. 자리수의 합이 최대인 자연수가 여러 개인 경우 그 중 값이 가장 큰 값을 출력한다. 97 1트 (강의 풀이) #include using namespace std; int digit_sum(int x){ int tmp, sum = 0; while(x > 0){ ..
자연수 N이 입력되면 1부터 N까지의 각 숫자들의 약수의 개수를 출력하는 프로그램을 작성하시오. 만약 N이 8이 입력되면, 1(1개), 2(2개), 3(2개), 4(3개), 5(2개), 6(4개), 7(2개), 8(4개)와 같이 각 숫자의 약수의 갯수가 구해집니다. 출력은 다음과 같이 1부터 차례대로 약수의 갯수만 출력하면 됩니다. 1 2 2 3 2 4 2 4 와 같이 출력한다. 입력 첫 번째 줄에 자연수 N이 주어진다. 8 출력 첫 번째 줄에 1부터 N까지의 약수의 개수를 순서대로 출력한다. 1 2 2 3 2 4 2 4 1트 (성공) 약수 모두 찾기 (제한시간에 걸림) => 시간복잡도 n^2 #include using namespace std; int main(){ //freopen("input.txt..
괄호가 입력되면 올바른 괄호이면 "YES", 올바르지 않으면 "NO"를 출력한다. (())() 이것은 괄호의 쌍이 올바르게 위치하는 거지만, (()()))은 올바른 괄호가 아닙니다. 입력 첫 번째 줄에 괄호 문자열이 입력된다. 문자열의 최대 길이는 30이다. (()(()))(() ()()(()()) 출력 NO YES #include using namespace std; int main(){ //freopen("input.txt", "rt", stdin); char a[100]; int cnt = 0; cin >> a; for(int i = 0; a[i] != '\0'; ++i){ if(a[i] == '(') cnt++; else if(a[i] == ')') cnt--; if(cnt < 0) break; ..
현수의 컴퓨터가 바이러스에 걸려 영어단어가 뛰어쓰기와 대소문자가 혼합되어 표현된다. 예를 들면 아름다운이라는 뜻을 가지고 있는 beautiful이라는 단어가 "bE au T I fu L"과 같이 컴퓨터에 표시되고 있다. 위와 같이 에러로 표시되는 영어단어를 원래의 표현대로 공백을 제거하고 소문자화 시켜 출력하는 프로그램을 작성하시오. 입력 첫 줄에 바이러스에 걸린 영어단어가 주어진다. 바이러스에 걸린 영어단어의 길이(공백포함)는 100을 넘지 않는다. 문자 사이의 공백은 연속적으로 존재할 수 있다. 입력은 알파벳과 공백만 주어진다. bE au T I fu L 출력 첫 줄에 소문자로 된 정상적인 영어단어를 출력한다. beautiful 1트 (성공) #include using namespace std; in..
문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만듭니다. 만들어진 자연수와 그 자연수의 약수 개수를 출력합니다. 만약 "t0e0a1c2her"에서 숫자만 추출하면 0, 0, 1, 2이고, 이것을 자연수로 만들면 12가 됩니다. 즉 첫 자리 0은 자연수화할 때 무시합니다. 출력은 12를 출력하고, 다음 줄에 12의 약수의 개수를 출력하면 됩니다. 추출하여 만들어지는 자연수는 100, 000, 000을 넘지 않습니다. 입력 첫 줄에 숫자가 섞인 문자열이 주어집니다. 문자열의 길이는 50을 넘지 않습니다. g0en2Ts8eSoft 출력 첫 줄에 자연수를 출력하고, 두 번째 줄에 약수의 개수를 출력합니다. 28 6 #include using namespace std; in..
주민등록증의 번호가 주어지면 주민등록증 주인의 나이와 성별을 판단하여 출력하는 프로그램을 작성하세요. 주민등록증의 번호는 -를 기준으로 앞자리와 뒷자리로 구분된다. 뒷자리의 첫 번째 수가 1이면 1900년대 남자이고, 2이면 1900년대 여자, 3이면 2000년대 남자, 4이면 2000년대 여자이다. 올해는 2019년입니다. 해당 주민등록증 주인의 나이와 성별을 출력하세요. 입력1 780316-2376152 출력1 42 W 입력2 061102-3575393 출력2 14 M 1트 (실패) - '-' 부호를 어떻게 이어서 출력할까 - 코드가 안예쁨 더보기 #include using namespace std; int main(){ int a, b, age; char gender; cin >> a; cout >..
N명의 나이가 입력됩니다. 이 N명의 사람 중 가장 나이 차이가 많이 나는 경우는 몇 살일까요? 최대 나이 차이를 출력하는 프로그램을 작성하세요. 입력 10 13 15 34 23 45 65 33 11 26 42 출력 54 1트 (실패) 더보기 #include using namespace std; int main(){ int count, dif, num; int min, max; List ageList = new List(); cin >> count; for(int i = 0; i > num; ageList.Add(num); } min = ageList[0]; max = ageList[1]; for(int i = 0; i < ageList.Count; ++i){ if(a..
자연수 N이 주어지면 자연수 N의 진약수의 합을 수식과 함께 출력하는 프로그램을 작성하세요. 입력 20 출력 1+2+4+5+10=22 헷갈린 부분 마지막에 +를 어떻게 생략할 것인지? > 1을 먼저 출력하고 +와 i를 출력하여 해결 #include using namespace std; int main(){ int num, sum = 0; cin >> num; cout