week4(실습 문제)
2025. 5. 22. 21:49ㆍ프로그래밍1및실습
Alphabet Counter
- 영어 알파벳으로만 구성된 문자열을 입력받아서 대소문자에 관계없이 입력받은 문장에 포함된 각 알파벳의 수를 오름차순으로 출력하도록 작성해 주세요.
- 출력을 할 때 먼저 각 알파벳을 소문자로 출력하고, colon(':') 뒤에 출현 빈도를 숫자로 적어주세요.
- 각 알파벳 사이는 빈칸으로 구분해 주세요.
- 문장 내에 없는 알파벳은 건너뛰고 출력해 주세요.
- 특수 문자 혹은 공백은 무시하세요.
- 최대 1000개의 character로 구성된 입력까지만 들어온다고 가정합니다.
입력
C programming practice is fun!
출력a:2 c:3 e:1 f:1 g:2 i:3 m:2 n:2 o:1 p:2 r:3 s:1 t:1 u:1
정답 코드#include<stdio.h> #include<string.h> #include<stdlib.h> #include<ctype.h> int a[34]; int main(){ char c[1004]; fgets(c, 1004, stdin); c[strcspn(c, "\n")]=='\0'; int lenX=strlen(c); for(int i=0;i<lenX;i++){ c[i]=tolower(c[i]); if(c[i]>='a'&&c[i]<='z') { a[c[i]-'a']+=1; } } for(int i=0;i<26;i++){ if(a[i]>0){ printf("%c:%d ",i+'a', a[i]); } } }
Sum of Prime Numbers
- 100보다 작은 자연수 n을 입력받아서 1부터 n사이의 모든 소수의 합을 출력하세요.
입력 1
12
출력 1
28
입력 230
출력 2129
정답 코드#include<stdio.h> int visited[104]; int main(){ for(int i=2;i<=104;i++){ if(!visited[i]){ for(int j=i*2;j<=104;j+=i){ visited[j]=1; } } } int n, sum=0; scanf("%d", &n); for(int i=2;i<=n;i++){ if(!visited[i]){ sum+=i; } } printf("%d", sum); }
Prime 339
- 사용자로부터 자연수를 하나 입력받고, 그 숫자보다 작거나 같은 소수들 중 숫자 내에 "339"가 포함된 것이 모두 몇 개인지 출력하세요.
- 소수: 숫자 자신과 1로만 나눠 떨어지는 수
- "339"가 들어간 숫자의 예시: 339, 1339,..., 9339,... 33900,...
- 입력으로는 100,000 이하의 자연수만 들어간다고 가정하세요.
- 결과는 숫자만 출력하세요.
입력 1
3000
출력 11
입력 230000
출력 212
정답 코드#include<stdio.h> #define INF 100004 int visited[INF]; int main(){ for(int i=2;i<=INF;i++){ if(!visited[i]){ for(int j=2*i;j<=INF;j+=i){ visited[j]=1; } } } int n; scanf("%d", &n); int cnt=0; for(int i=339;i<=n;i++){ int temp=i; if(visited[temp]) continue; while(temp>=339){ if(temp%1000==339){ //printf("%d\n", i); cnt+=1; break; } temp/=10; } } printf("%d", cnt); }
Alphabet Tree
- 사용자로부터 영문 알파벳을 입력받아서 다음의 입출력 예시와 같은 패턴을 출력해 주세요.
- 각 행의 시작은 A부터 출력하세요.
- 단, 각 행에 출력되는 문자들은 중앙 정렬하세요.
- 사용자가 입력한 문자열을 포함한 행이 출력되면 프로그램을 종료하세요.
- 소문자 알파벳을 입력한 경우, 대응되는 대문자로 변환하여 처리해 주세요.
- 영문 알파벳 이외의 입력에 대해서는 "ERR"을 출력하세요.
입력 1
C
출력 1A ABA ABCBA
입력 2d
출력 2A ABA ABCBA ABCDCBA
입력 3^
출력 3ERR
정답 코드#include<stdio.h> #include<ctype.h> #include<string.h> #include<stdlib.h> int main(){ char c; scanf("%c", &c); c=toupper(c); if(c>='Z'||c<='A') { printf("ERR"); return 0; } int s=1, e=c-'A'; for(int i=e;i>=0;i--){ for(int j=0;j<i;j++){ printf(" "); } for(int j=0;j<=e-i;j++){ printf("%c", j+'A'); } for(int j=e-i-1;j>=0;j--){ printf("%c", j+'A'); } printf("\n"); } }
Sum of Squares
- 사용자로부터 두 개의 서로 다른 자연수를 입력받아서 두 숫자 사이에 존재하는 수들의 제곱의 합을 출력하세요. 예를 들어, 1과 3을 입력한 경우 1 + 4 + 9 = 14가 출력되어야 합니다.
- 같은 숫자가 입력될 경우 0을 출력하세요.
- 0이나 음수 입력은 없다고 가정합니다.
- 두 숫자는 크기와 관계없이 임의의 순서로 입력됩니다.
입력 1
5 9
출력 1255
입력 24 3
출력 225
입력 31 1
출력 30
정답 코드#include<stdio.h> #include<stdlib.h> #include<ctype.h> #include<string.h> #include<stdbool.h> int main(){ int n,m; scanf("%d %d", &n, &m); if(n==m){ printf("0"); return 0; } if(n>m){ int temp=n; n=m; m=temp; } int sum=0; for(int i=n;i<=m;i++){ sum+=i*i; } printf("%d", sum); }
'프로그래밍1및실습' 카테고리의 다른 글
| week6(실습 문제) (0) | 2025.05.28 |
|---|---|
| week5(실습 문제) (0) | 2025.05.25 |
| week3(실습 문제) (0) | 2025.05.22 |
| week2(실습 문제) (0) | 2025.05.22 |
| 배열과 문자열 (0) | 2025.05.01 |