본문 바로가기
CodeUp 기초 100제/C

CodeUp[코드업] C언어 1078 ~ 1085 : [기초 - 종합]

by En_Geon 2019. 12. 9.

1078 : [기초 - 종합] 짝수 합 구하기

문제 설명 : https://codeup.kr/problem.php?id=1078

 

정수를 입력받아 1부터 그 수까지 짝수의 합을 구하는 문제다.

 

이제부터는 지금까지 배운 문제를 종합하는 문제가 나온다.

종합문제에 대한 설명은 주석으로 대신하겠다. 

 

더보기

 

#include      < stdio.h>

int main()
{
    int sum = 0;
    int i, j;
    scanf("%d", &j);    // 정수를 입력받아 j에 저장
    
    for(i = 1; i <= j; i++)  // for문  i는 1부터 j까지 밑 구문을 실행 후 i를 1 증가
    {
        if(i % 2 == 0)     // if문  i를 2로 나눈 나머지가 0일 때
            sum += i;       // sum = sum + i와 같다. 누적 연산.
    }  // i가 j 작거나 같을 때(이하)까지 반복 후 for문을 빠져나감
    
    printf("%d", sum); // sum을 출력한다.
    return 0;
}

1079 : [기초 - 종합] 원하는 문자가 입력될 때까지 반복 출력하기

문제 설명 : https://codeup.kr/problem.php?id=1079

 

원하는 문자가 입력될 때까지 반복 출력 문제다.

 

더보기

 

#include     <stdio.h>

int main()
{
    char i ;
             // do while문을 이용
    do 
    {
        scanf("%c ", &i);            // 문자를 입력받아 변수 i에 저장
        printf("%c\n", i);          // 변수 i를 출력 후 개행
    } while(i != 'q');                 // i가 q가 아닐 때까지 반복, q가 나오면 do while문을 빠져나감
    return 0;
}

 

1080 : [기초 - 종합] 언제까지 더해야 할까?

문제 설명 : https://codeup.kr/problem.php?id=1080

 

1부터 순서대로 누적 연산을 더하다가 입력된 정수와 같거나 커졌을 때, 마지막에 더한 정수를 출력하는 문제다.

 

더보기

 

#include 

 

int main()

{

    int i, j, sum = 0;          // 변수 초기화

    scanf("%d", &j);          //  정수를 입력받아 j에 저장

    

    for(i = 1; sum < j; i++)    // for문 

    {                     // i는 1부터 sum이 j 보다 작을때 밑 구문을 실행 후 i를 1 증가

        sum += i;     // 1부터 누적 연산해서 sum에 저장

        if(sum >= j)  // sum이 j보다 크거나 같을 때 밑 구문을 실행

        printf("%d", i);  // i를 출력

    }

    return 0;

}

 

1081 : [기초 - 종합] 주사위를 2개 던지면?

문제 설명 : https://codeup.kr/problem.php?id=1081

 

  • 중첩 반복문을 배운다.
  • for문의 응용이다.

중첩 for문이란 if문 안에 또 다른 if문을 넣을 수 있는 것처럼, for문 안에 또 다른 for문을 포함시키는 것도 가능하다.

중첩 for문은 첫 for문은 두 번째 for문의 증감식이 끝나고 나서 증감식이 일어난다. 

전체 for문은 첫 for문의 조건식이 거짓이면 모든 for문을 빠져나간다.

 

더보기

 

#include   <stdio.h>

int main()
{
    int x, y;
    scanf("%d %d", &x, &y);   // 정수를 입력받아 x, y에 저장
    
    for(int i = 1; i <= x; i++)      
    {            // for문 i가 1부터 x보다 작거나 같을 때까지 밑 구문을 실행 후 i를 1 증가
        for (int j = 1; j <= y; j++)   // for문 

         // j가 1부터 j보다 작거나 같을 때까지 밑 구문을 실행 후 j를 1 증가
        printf("%d %d\n", i , j);
    }
    return 0;
}

 

/* x = 2, y = 2를 입력받았을 때

첫 for문은 for( int i = 1; i <= 2; i++)가 되고 두 번째 for문은 for(int j = 1; j <= y; j++)가 된다.

이때 중첩 for문의 실행 구조는 첫 for문에서 i에 1을  저장하고 두 번째 for문에서 j가 1에 저장된다.

그래서 첫 출력은 1, 1이 나온다.

 

아직 두 번째 for문의 조건식이 참이기 때문에 두 번째 for문을 실행한다.

두 번째 출력은 1, 2가 나온다 

첫 for문은 두 번째 for문의 조건식이 거짓일 때까지 고정된다는 생각을 하면 쉽다.

 

j가 3이 되어 두 번째 for문의 조건식이 거짓이 되어 첫 번째 for문으로 이동한다.

첫 번째 for문에서 증감식을 실행해 i에 2를 저장 후 두 번째 for문으로 이동한다.

두 번째 for문에서 다시 초기화가 이루어져 j는 다시 1이 되어 j에 저장한다.

세 번째 출력은 2, 1이 나온다. 네 번째는 같은 방법으로 2,2 가 나오게 된다. */

 

1082 : [기초 - 종합] 16진수 구구단?

문제 설명 : https://codeup.kr/problem.php?id=1082

 

16진수 구구단을 출력하는 문제다.

 

더보기

 

#include     <stdio.h>

int main()
{
    int input = 0;
    scanf("%X", &input);   // 16진수 대문자로 저장
    
    for(int i = 1; i <=15; i++ )   // for문 i는 1부터 i가 15보다 작거나 같을 때 밑 구문 실행
        printf("%X*%X=%X\n", input, i, input*i);  // 16진수로 출력
        
return 0;
}

 

1083 : [기초 - 종합] 3 6 9 게임의 왕이 되자!

문제 설명 : https://codeup.kr/problem.php?id=1083

 

3 6 9 게임을 코드로 바꾸는 문제다.

 

더보기

 

#include     <stdio.h>

int main()
{
    int i, input;
    scanf("%d", &input); 
    
    for(i = 1; i <= input; i++)  
    {    // for문 i가 1부터 i가 input보다 작거나 같을 때 밑 구문을 실행 후 i를 1 증가
        if(i %3 ==0)        // i를 3으로 나눈 나머지가 0(3의 배수) 일 때 밑 구문을 실행
            printf("X ");
        else    // i를 3으로 나눈 나머지가 0(3의 배수)이 아닐 때  밑 구문을 실행
            printf("%d ", i);  // i를 그대로 출력
    }
    return 0;
}

 

1084 : [기초 - 종합] 빛 섞어 색 만들기

문제 설명 : https://codeup.kr/problem.php?id=1084

 

경우의 수를 출력하는 문제다.

 

1081에서  중첩 for문 실행 순서에 대해 자세히 설명했다. 어떤 게 고정되는지를 생각하면 쉽다.

1081에서 자세히 설명했으니 설명과 주석은 생략하겠다.

더보기

 

#include     <stdio.h>

int main()
{
    int r, g, b, c = 0;
    scanf("%d %d %d", &r, &g, &b);
    

    // 중첩 for문
    for(int i = 0; i < r; i++)    
        for(int j = 0; j < g; j++)
            for(int k = 0; k < b; k++)
            {
                printf("%d %d %d\n", i, j, k);
                c++;
            }
            
    printf("%d", c);
return 0;
}

 

1085 : [기초 - 종합] 소리 파일 저장용량 계산하기

문제 설명 : https://codeup.kr/problem.php?id=1085

 

소리 파일 저장용량을 계산문제다.

 

문제 설명에 소리 파일의 저장용량을 계산하는 설명이 있다.

 

더보기

 

#include     <stdio.h>

int main()
{
    int h, b, c, s;    
    scanf("%d %d %d %d", &h, &b, &c, &s);
    
    printf("%.1f MB", (float)h * b * c * s / 8 / 1024 / 1024); 

 // 강제 형 변환을 통해 int형을 float형으로 변환했고, 소수점 첫 째자리까지 출력.

// 1024를 나누는 것은 단위를 바꾸는 것이다.

//  cm에서 m로 바꾸는 것과 같은 방식인데 컴퓨터 분야에서 이숫자는 단위의 기준으로써 1000 대신 사용한다.
    return 0;
}

댓글