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​


입력 2

30


출력 2

129


정답 코드

#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​


출력 1

1


입력 2

30000


출력 2

12


정답 코드

#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​


출력 1

  A
 ABA
ABCBA


입력 2

d


출력 2

   A
  ABA
 ABCBA
ABCDCBA


입력 3

^


출력 3

ERR


정답 코드

#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​


출력 1

255


입력 2

4 3


출력 2

25


입력 3

1 1


출력 3

0


정답 코드

#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