hayo_su 2022. 7. 12. 14:20

Counting 배열


1-9 개수 세기

원소의 크기가 1에서 9 사이인 n개의 원소가 주어졌을 때, 1부터 9까지 각각 몇 번씩 나왔는지를 출력하는 프로그램을 작성해보세요.

#include<iostream>
using namespace std;
int main(){
    int n,tmp;
    cin >> n;
    int m[9] = { 0,};
    for(int i=0;i<n;i++){
        cin>>tmp;
        m[tmp-1]++;
    }
    for(int j=0;j<9;j++)    cout<<m[j]<<endl;
}

주사위 놀이

주사위를 10번 던진다고 합니다. 던질 때마다 나온 숫자가 주어지면 각 숫자가 몇 번씩 나왔는지 출력하는 프로그램을 작성해보세요.

#include<iostream>
using namespace std;
int main(){
    int n;
    int m[6]={0,};
    for(int i=0;i<10;i++){
        cin>>n;
        m[n-1]++;
    }
    for(int j=0;j<6;j++){
        cout<< j+1<<" - "<<m[j]<<endl;
    }
    return 0;
}

십의 자리 숫자

세자리 미만의 정수가 주어지다가 0이 주어지면 그 0을 제외하고 그 때까지 입력된 정수의 숫자들의 십의 자리 숫자가 각각 몇 개인지 작은 수부터 출력하는 프로그램을 작성해보세요. 단, 0이 첫 번째 부터 주어지지않는다고 가정해도 좋습니다.

#include <iostream>
using namespace std;
int main(){
    int n;
    int m[9]={0,};
    cin >> n;
    while(n!=0){
        if(n/10>0)  m[n/10-1]++;
        cin >> n;
    }
    for(int i=0;i<9;i++){
        cout<<i+1<<" - "<<m[i]<<endl;
    }
    return 0;
}

점수대 파악하기

100명 이하인 학생들의 점수가 주어지다가 0이 주어지면 그때까지 주어진 점수를 10점 단위로 구분하여 점수대별 학생 수를 출력하는 프로그램을 작성해보세요.

#include<iostream>
using namespace std;
int main(){
    int n;
    int m[10]={0,};
    cin >> n;
    while(n!=0){
        if(n/10>0)  m[n/10-1]++;
        cin >> n;
    }
    for(int i=10;i>0;i--){
        cout<<i*10<<" - "<<m[i-1]<<endl;
    }
    return 0;
}

코로나 메뉴얼2

감기 증상이 있으면 Y, 감기 증상이 없으면 N으로 나타내기로 하고, 체온을 쟀을 때 수치에 따라 진료소를 다르게 구분하려고 합니다.

  • 증상도 있고 37℃ 이상일 때 A
  • 증상은 없지만 37℃ 이상일 때 B
  • 증상은 있지만 체온은 정상일 때 C
  • 둘 다 괜찮은 경우엔 D
  • 한 번에 3명씩 검사하는데 A로 가는 사람이 2명 이상 나올때는 위급상황 E로 분류합니다.
#include <iostream>
using namespace std;
int main(){
    char a;
    int temp;
    int b[4]={0,};
    for(int i=0;i<3;i++){
        cin >> a >> temp;
        if(a=='Y'){
            if(temp>=37)    b[0]++;
            else    b[2]++;
        }
        else{
            if(temp>=37)    b[1]++;
            else    b[3]++;
        }
    }
    for(int j=0;j<4;j++)    cout<<b[j]<<' ';
    if(b[0]>=2) cout<<'E';
    return 0;
}

나눗셈의 나머지

두 정수 a, b가 주어지면, a를 b로 나눈 몫을 a에 계속해서 저장하는 것을 반복하려고 합니다.

a가 1이하가 되기 전 까지 나눗셈을 반복한다고 할 때, 각 나눗셈 연산마다 나온 나머지들이 등장한 횟수를 제곱하여 그 합을 출력하는 프로그램을 작성해보세요.

예를 들어, a = 1000, b = 4인 경우 나눗셈은 다음과 같이 진행됩니다.

1000÷4=250 ... 0

250÷4=62 ... 2

62÷4=15 ... 2

15÷4=3 ... 3

3÷4=0 ... 3

5번의 나눗셈 동안 나머지는 0이 1번, 2가 2번, 3이 2번 등장했으므로, 각 나머지가 나온 횟수의 제곱의 합은 $1^2+2^2+2^2=9$ 입니다.

#include <iostream>
using namespace std;
int main(){
    int a,b,result = 0;
    cin >> a >> b;
    int n[b] = {0,};
    while(a >1 ){
        n[a%b]++;
        a /= b;
    }
    for(int i=0;i<b;i++){
        result += n[i]*n[i];
    }
    cout<<result;
    return 0;
}