100제

k4bunny·2025년 5월 4일

Layer7

목록 보기
3/13






1001 : [기초-출력] 출력하기01(설명)

입력

입력 없음

출력

Hello

풀이

출력함수를 이용하여 주어진 문장 출력

#include <stdio.h>
int main() {
    printf("Hello");
    
    return 0;
}

1002 : [기초-출력] 출력하기02(설명)

입력

입력 없음

출력

Hello World

풀이

출력함수를 이용하여 주어진 문장 출력

#include <stdio.h>
int main() {
    printf("Hello World");
    
    return 0;
}

1003 : [기초-출력] 출력하기03(설명)

입력

입력 없음

출력

Hello
World

풀이

이스케이프 시퀸스를 이용하여 주어진 문장 출력

#include <stdio.h>
int main() {
    printf("Hello\nWorld");
    
    return 0;
}

1004 : [기초-출력] 출력하기04(설명)

입력

입력 없음

출력

'Hello'

풀이

이스케이프 시퀸스를 이용하여 주어진 문장 출력

#include <stdio.h>
int main() {
    printf("\'Hello\'");
    
    return 0;
}

1005 : [기초-출력] 출력하기05(설명)

입력

입력 없음

출력

"Hello World"

풀이

이스케이프 시퀀스를 이용하여 주어진 문장 출력

#include <stdio.h>
int main() {
    printf("\"Hello World\"");
    
    return 0;
}

1006 : [기초-출력] 출력하기06(설명)

입력

입력 없음

출력

"!@#$%^&*()"

풀이

이스케이프 시퀀스를 이용하여 특수부호들을 출력

#include <stdio.h>
int main() {
    printf("\"!@#$%%^&*()\"");
    
    return 0;
}

1007 : [기초-출력] 출력하기07(설명)

입력

입력 없음

출력

"C:\Download\hello.cpp"

풀이

이스케이프 시퀀스를 이용하여 주어진 문장 출력

#include <stdio.h>
int main() {
    printf("\"C:\\Download\\hello.cpp\"");
    
    return 0;
}

1008 : [기초-출력] 출력하기08(설명)

입력

입력 없음

출력

┌┬┐
├┼┤
└┴┘

풀이

유니코드를 이용하여 주어진 모양 출력

#include <stdio.h>
int main() {
    printf("\u250C\u252C\u2510\n");
    printf("\u251C\u253C\u2524\n");
    printf("\u2514\u2534\u2518\n");
    
    return 0;
}

1010 : [기초-입출력] 정수 1개 입력받아 그대로 출력하기(설명)

입력

15

출력

15

풀이

입력함수를 이용하여 정수를 입력받고 출력

#include <stdio.h>
int main() {
    int n;
    scanf("%d", &n);
    printf("%d", n);

    return 0;
}

1011 : [기초-입출력] 문자 1개 입력받아 그대로 출력하기(설명)

입력

p

출력

p

풀이

입력함수를 이용하여 문자를 입력받고 출력

#include <stdio.h>
int main() {
    char x;
    scanf("%c", &x);
    printf("%c", x);
    
    return 0;
}

1012 : [기초-입출력] 실수 1개 입력받아 그대로 출력하기(설명)

입력

1.414213

출력

1.414213

풀이

입력함수를 이용하여 실수를 입력받고 출력

#include <stdio.h>
int main() {
    float x;
    scanf("%f", &x);
    printf("%f", x);
    
    return 0;
}

1013 : [기초-입출력] 정수 2개 입력받아 그대로 출력하기(설명)

입력

1 2

출력

1 2

풀이

입력함수를 이용하여 2개의 정수를 입력받고 출력

#include <stdio.h>
int main(){
    int a, b;
    scanf("%d %d", &a, &b);
    printf("%d %d", a, b);
    
    return 0;
}

1014 : [기초-입출력] 문자 2개 입력받아 순서 바꿔 출력하기(설명)

입력

A b

출력

b A

풀이

입력함수를 이용하여 2개의 문자를 입력받고, 출력함수에서 순서를 바꿔서 출력

#include <stdio.h>
int main(){
    char x, y;
    scanf("%c %c", &x, &y);
 
    printf("%c %c", y, x);
    
    return 0;
}

1015 : [기초-입출력] 실수 입력받아 둘째 자리까지 출력하기(설명)

입력

1.59254

출력

1.59

풀이

float형을 지정된 값까지만 불러오도록 지정하여 출력

#include <stdio.h>
int main(){
    float x;
    scanf("%f", &x);
    printf("%.2f", x);
    
    return 0;
}

1017 : [기초-입출력] 정수 1개 입력받아 3번 출력하기(설명)

입력

125

출력

125 125 125

풀이

출력함수를 이용하여 변수 'a'를 3번 출력

#include <stdio.h>
int main(){
    int a;
    scanf("%d", &a);
    
    printf("%d %d %d", a, a, a);
    
    return 0;
}

1018 : [기초-입출력] 시간 입력받아 그대로 출력하기(설명)

입력

3:16

출력

3:16

풀이

두 정수를 ':'로 구분하여 입력받고, 출력

#include <stdio.h>
int main() {
    int h, m;
    scanf("%d:%d", &h, &m);
    printf("%d:%d", h, m);
    
    return 0;
}

1019 : [기초-입출력] 연월일 입력받아 그대로 출력하기

입력

2013.8.5

출력

2013.08.05

풀이

%0n을 통해 채워지지 않은 자리에 0을 채워서 출력

#include <stdio.h>
int main() {
    int y, m, d;
    scanf("%d.%d.%d", &y, &m, &d);

    printf("%04d.%02d.%02d", y, m, d);

    return 0;
}

1020 : [기초-입출력] 주민번호 입력받아 형태 바꿔 출력하기

입력

000907-1121112

출력

0009071121112

풀이

%0n을 통해 채워지지 않은 자리에 0을 채워서 출력

#include <stdio.h>

int main() {
    long int a, b;
    scanf("%ld-%ld", &a, &b);

    printf("%06ld%07ld", a, b);

    return 0;
}

1021 : [기초-입출력] 단어 1개 입력받아 그대로 출력하기(설명)

입력

Informatics

출력

Informatics

풀이

크기를 지정하여 문자열을 선언 후, 입력함수로 값을 받고 출력

#include <stdio.h>

int main() {
    char s[51] = " ";
    scanf("%s", s);

    printf("%s", s);

    return 0;
}

1022 : [기초-입출력] 문장 1개 입력받아 그대로 출력하기(설명)

입력

Programming is very fun!!

출력

Programming is very fun!!

풀이

크기를 지정하여 문자열을 선언 후, 입력함수로 값을받고 출력

fgets() 와 scanf() 의 차이점
fgets() - 공백 포함 가능
scanf() - 공백 포함 불가능

#include <stdio.h>

int main() {
    char s[2001];
    fgets(s, 2000, stdin);

    printf("%s", s);
    
    return 0;
}

1023 : [기초-입출력] 실수 1개 입력받아 부분별로 출력하기(설명)

입력

1.414213

출력

1
414213

풀이

'.' 을 기준으로 다른 변수로 입력받고, 이스케이프 시퀸스를 이용하여 출력

#include <stdio.h>

int main() {
    long int a, b;
    scanf("%d.%d", &a, &b);

    printf("%d\n%d", a, b);

    return 0;
}

1024 : [기초-입출력] 단어 1개 입력받아 나누어 출력하기(설명)

입력

Boy

출력

'B'
'o'
'y'

풀이

문자열 인덱스를 이용하여 출력

#include <stdio.h>

int main() {
    char d[30];
    scanf("%s", d);
    for(int i = 0; d[i] != '\0'; i++)
    {
        printf("\'%c\'\n", d[i]);
    }
    
    return 0;
}

1025 : [기초-입출력] 정수 1개 입력받아 나누어 출력하기(설명)

입력

75254

출력

[70000]\n
[5000]\n
[200]\n
[50]\n
[4]

풀이

'1d'를 이용해 각각의 변수에 정수를 할당한 후, 각 자리의 값의 크기를 출력

`nd' - n개의 정수값을 입 / 출력

#include <stdio.h>

int main() {
    long int a, b, c, d, e;
    scanf("%1d%1d%1d%1d%1d", &a, &b, &c, &d, &e);

    printf("[%d]\n", a*10000);
    printf("[%d]\n", b*1000);
    printf("[%d]\n", c*100);
    printf("[%d]\n", d*10);
    printf("[%d]\n", e*1);

    return 0;
}

1026 : [기초-입출력] 시분초 입력받아 분만 출력하기(설명)

입력

17:23:57

출력

23

풀이

':' 를 기준으로 나누어서 각각의 변수의 할당한 후, 분만 출력

#include <stdio.h>
int main() {
    int h, m, s;
    scanf("%d:%d:%d", &h, &m, &s);
    printf("%d", m);
    
    return 0;
}

1027 : [기초-입출력] 년월일 입력 받아 형식 바꿔 출력하기(설명)

입력

2014.07.15

출력

15-07-2014

풀이

'.' 을 기준으로 나누어 각각의 변수에 할당 후, 출력 형식에 맞게 출력

#include <stdio.h>
int main() {
    int y, m, d;
    scanf("%d.%d.%d", &y, &m, &d);
    printf("%02d-%02d-%04d", d, m, y);
    
    return 0;
}

1028 : [기초-데이터형] 정수 1개 입력받아 그대로 출력하기2(설명)

입력

2147483648

출력

2147483648

풀이

unsigned int형의 변수에 값을 할당받고 출력

unsigned int형 - int형보다 더 넓은 범위의 자연수를 할당 가능
%d - int형
%u - unsigned int형

#include <stdio.h>
int main() {
    unsigned int n;
    scanf("%u", &n);
    printf("%u", n);
    
    return 0;
}

1029 : [기초-데이터형] 실수 1개 입력받아 그대로 출력하기2(설명)

입력

3.14159265359

출력

3.14159265359

풀이

double형의 변수에 값을 할당받고 출력

double형 - float형보다 더 넓은 범위의 실수를 할당 가능
%f - float형
%lf - double형

#include <stdio.h>
int main() {
    double d;
    scanf("%lf", &d);
    printf("%.11f", d);
    
    return 0;
}

1030 : [기초-데이터형] 정수 1개 입력받아 그대로 출력하기3(설명)

입력

-2147483649

출력

-2147483649

풀이

long long int형의 변수에 값을 할당받고 출력

long long int형 - int형보다 더 넓은 범위의 자연수를 할당 가능
%d - int형
%lld - long long int형

#include <stdio.h>
int main(){
    long long int n;
    scanf("%lld", &n);
    printf("%lld", n);
    
    return 0;
}

1031 : [기초-출력변환] 10진 정수 1개 입력받아 8진수로 출력하기(설명)

입력

10

출력

12

풀이

10진수를 입력받아 8진수로 출력

%d - 10진수
%x - 8진수

#include <stdio.h>
int main() {
    int a;
    scanf("%d", &a);
    
    printf("%o", a);
    
    return 0;
}

1032 : [기초-출력변환] 10진 정수 입력받아 16진수로 출력하기1(설명)

입력

255

출력

ff

풀이

10진수를 입력받아 16진수(소문자)로 출력

%d - 10진수
%x - 16진수(소문자)

#include <stdio.h>
int main() {
    int a;
    scanf("%d", &a);
    
    printf("%x", a);
    
    return 0;
}

1033 : [기초-출력변환] 10진 정수 입력받아 16진수로 출력하기2(설명)

입력

255

출력

FF

풀이

10진수를 입력받아 16진수(대문자)로 출력

%d - 10진수
%X - 16진수(대문자)

#include <stdio.h>
int main() {
    int a;
    scanf("%d", &a);
    
    printf("%X", a);
    
    return 0;
}

1034 : [기초-출력변환] 8진 정수 1개 입력받아 10진수로 출력하기(설명)

입력

13

출력

11

풀이

8진수를 입력받아 10진수로 출력

%o - 8진수
%d - 10진수

#include <stdio.h>
int main() {
    int a;
    scanf("%o", &a);
    
    printf("%d", a);
    
    return 0;
}

1035 : [기초-출력변환] 16진 정수 1개 입력받아 8진수로 출력하기(설명)

입력

f

출력

17

풀이

16진수를 입력받아 8진수로 출력

%x - 16진수
%o - 8진수

#include <stdio.h>
int main() {
    int a;
    scanf("%x", &a);
    
    printf("%o", a);
    
    return 0;
}

1036 : [기초-출력변환] 영문자 1개 입력받아 10진수로 출력하기(설명)

입력

A

출력

65

풀이

문자를 입력받고, 고유 아스키코드값을 이용하여 정수로 출력

getchar() - 문자 한 개를 입력받는 함수

#include <stdio.h>

int main() {
    char c;

    c = getchar();

    printf("%d", c);

    return 0;
}

1037 : [기초-출력변환] 정수 입력받아 아스키 문자로 출력하기

입력

65

출력

A

풀이

정수를 입력받고, 고유 아스키코드값을 이용하여 문자로 출력

#include <stdio.h>

int main() {
    int d;

    scanf("%d", &d);

    printf("%c", d);

    return 0;
}

1038 : [기초-산술연산] 정수 2개 입력받아 합 출력하기1(설명)

입력

123 -123

출력

0

풀이

정수 2개를 입력받고, 더한 값을 출력

#include <stdio.h>

int main() {
    long int x, y;

    scanf("%ld %ld", &x, &y);

    printf("%ld", x+y);

    return 0;
}

1039 : [기초-산술연산] 정수 2개 입력받아 합 출력하기2(설명)

입력

2147483648 2147483648

출력

4294967296

풀이

정수 2개를 입력받고, 더한 값을 출력

#include <stdio.h>

int main() {
    long long int x, y;

    scanf("%lld %lld", &x, &y);

    printf("%lld", x+y);

    return 0;
}

1040 : [기초-산술연산] 정수 1개 입력받아 부호 바꿔 출력하기(설명)

입력

-1

출력

1

풀이

정수를 입력받아 '-'를 곱하여 출력

#include <stdio.h>

int main() {
    int a;
    scanf("%d", &a);
    
    printf("%d", -a);

    return 0;
}

1041 : [기초-산술연산] 문자 1개 입력받아 다음 문자 출력하기(설명)

입력

a

출력

b

풀이

고유 아스키코드값에 +1을 하여 출력

#include <stdio.h>

int main() {
    char c;

    c = getchar();

    printf("%c", c+1);

    return 0;
}

1042 : [기초-산술연산] 정수 2개 입력받아 나눈 몫 출력하기(설명)

입력

1 3

출력

0

풀이

연산자 '/'를 사용하여 몫 출력

#include <stdio.h>

int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    
    printf("%d", a/b);

    return 0;
}

1043 : [기초-산술연산] 정수 2개 입력받아 나눈 나머지 출력하기(설명)

입력

10 3

출력

1

풀이

연산자 '%'를 사용하여 나머지 출력

#include <stdio.h>

int main() {
    int a, b;
    scanf("%d %d", &a, &b);

    printf("%d", a%b);

    return 0;
}

1044 : [기초-산술연산] 정수 1개 입력받아 1 더해 출력하기(설명)

입력

2147483647

출력

2147483648

풀이

long long int형을 이용하여 변수 'a'에 1을 더한 후, 출력

#include <stdio.h>

int main() {
    long long int a;
    scanf("%lld", &a);

    printf("%lld", ++a);

    return 0;
}

1045 : [기초-산술연산] 정수 2개 입력받아 자동 계산하기

입력

10 3

출력

13
7
30
3
1
3.33

풀이

연산자 '+', '-', '*', '/', '%'를 이용하여 출력 형식에 맞게 출력

#include <stdio.h>

int main() {
    int a, b;
    scanf("%d %d", &a, &b);

    printf("%d\n", a+b);
    printf("%d\n", a-b);
    printf("%d\n", a*b);
    printf("%d\n", a/b);
    printf("%d\n", a%b);
    printf("%.2f", (float)a/b);

    return 0;
}

1046 : [기초-산술연산] 정수 3개 입력받아 합과 평균 출력하기

입력

1 2 3

출력

6
2.0

풀이

연산자를 이용하여 세 수의 합과 평균을 출력

#include <stdio.h>

int main() {
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);

    printf("%d\n", a+b+c);
    printf("%.1f\n", (float)(a+b+c)/3);

    return 0;
}

1047 : [기초-비트시프트연산] 정수 1개 입력받아 2배 곱해 출력하기(설명)

입력

1024

출력

2048

풀이

비트시프트 연산을 통해 입력받은 정수를 2배 한 정수를 출력

printf("%d", a<<1); // 10을 2배 한 값인 20 이 출력
printf("%d", a>>1); // 10을 반으로 나눈 값인 5 가 출력
printf("%d", a<<2); // 10을 4배 한 값인 40 이 출력
printf("%d", a>>2); // 10을 반으로 나눈 후 다시 반으로 나눈 값인 2 가 출력

#include <stdio.h>

int main() {
    int a;
    scanf("%d", &a);

    printf("%d", a << 1);

    return 0;
}

1048 : [기초-비트시프트연산] 한 번에 2의 거듭제곱 배로 출력하기(설명)

입력

1 3

출력

8

풀이

비트시프트 연산을 통해 입력받은 정수를 2배 한 정수를 출력

printf("%d", 1 << 3); // 1 2 2 * 2가 출력

#include <stdio.h>

int main() {
    int a, b;
    scanf("%d %d", &a, &b);

    printf("%d", a << b);

    return 0;
}

1049 : [기초-비교연산] 두 정수 입력받아 비교하기1(설명)

입력

9 1

출력

1

풀이

입력받은 두 정수를 대소비교하여 첫 번째 입력값이 더 크면 1을 출력

< : 오른쪽값이 왼쪽값보디 크면 1, 아니면 0

#include <stdio.h>

int main() {
    int a, b;
    scanf("%d %d", &a, &b);

    printf("%d", a > b);

    return 0;
}

1050 : [기초-비교연산] 두 정수 입력받아 비교하기2(설명)

입력

0 0

출력

1

풀이

입력받은 두 정수의 값이 같으면 1을 출력

== : 두 수가 같으면 1, 다르면 0

#include <stdio.h>

int main() {
    int a, b;
    scanf("%d %d", &a, &b);

    printf("%d", a == b);

    return 0;
}

1051 : [기초-비교연산] 두 정수 입력받아 비교하기3(설명)

입력

0 -1

출력

0

풀이

입력받은 두 정수를 대소비교하여 두 번째 입력값이 더 크거나 같은 경우 1을 출력

<= : 오른쪽값이 왼쪽값보다 크거나 같으면 1, 아니면 0

#include <stdio.h>

int main() {
    int a, b;
    scanf("%d %d", &a, &b);

    printf("%d", a <= b);

    return 0;
}

1052 : [기초-비교연산] 두 정수 입력받아 비교하기4(설명)

입력

0 1

출력

1

풀이

입력받은 두 정수가 다른 경우 1을 출력

!= : 두 수가 다르면 1, 같으면 0

#include <stdio.h>

int main() {
    int a, b;
    scanf("%d %d", &a, &b);

    printf("%d", a != b);

    return 0;
}

1053 : [기초-논리연산] 참 거짓 바꾸기(설명)

입력

1

출력

0

풀이

! 를 이용하여 정수 하나의 값을 입력받아 반대로 출력

! : 참이면 거짓, 거짓이면 참

#include <stdio.h>

int main() {
    int a;
    scanf("%d", &a);

    printf("%d", !a);

    return 0;
}

1054 : [기초-논리연산] 둘 다 참일 경우만 참 출력하기(설명)

입력

1 1

출력

1

풀이

&& 를 이용하여 출력 형식에 맞도록 출력

&& : 두 수가 참이면 참, 하나라도 거짓이면 거짓

#include <stdio.h>

int main() {
    int a, b;
    scanf("%d %d", &a, &b);

    printf("%d", a && b);

    return 0;
}

1055 : [기초-논리연산] 하나라도 참이면 참 출력하기(설명)

입력

1 1

출력

1

풀이

|| 를 이용하여 출력 형식에 맞도록 출력

|| : 둘 중 하나라도 참이라면 참, 둘 다 거짓일때만 거짓

#include <stdio.h>

int main() {
    int a, b;
    scanf("%d %d", &a, &b);

    printf("%d", a || b);

    return 0;
}

1056 : [기초-논리연산] 참/거짓이 서로 다를 때에만 참 출력하기(설명)

입력

1 1

출력

0

풀이

비교 연산자를 활용하여 출력 형식에 맞도록 출력

XOR(베타적 논리합)
(a&&!b) || (!a&&b) : 참 / 거짓이 서로 다를 때에만 1로 계산

#include <stdio.h>

int main() {
    int a, b;
    scanf("%d %d", &a, &b);

    printf("%d", (a&&!b) || (!a&&b));

    return 0;
}

1057 : [기초-논리연산] 참/거짓이 서로 같을 때에만 참 출력하기

입력

0 0

출력

1

풀이

양쪽이 둘 다 참 혹은 둘 다 거짓일때만 1 이 출력

#include <stdio.h>

int main() {
    int a, b;
    scanf("%d %d", &a, &b);

    printf("%d", (a&&b) || (!a&&!b));

    return 0;
}

1058 : [기초-논리연산] 둘 다 거짓일 경우만 참 출력하기

입력

0 1

출력

0

풀이

양쪽이 모두 거짓일때만 1 이 출력

#include <stdio.h>

int main() {
    int a, b;
    scanf("%d %d", &a, &b);

    printf("%d", !(a||b));

    return 0;
}

1059 : [기초-비트단위논리연산] 비트단위로 NOT 하여 출력하기(설명)

입력

2

출력

-3

풀이

양쪽이 모두 거짓일때만 1 이 출력

~ : 정수값을 2진수로 변환하여 0인 부분은 1로, 1인 부분은 0으로 바꿈

#include <stdio.h>

int main() {
    int a;
    scanf("%d", &a);

    printf("%d", ~a);

    return 0;
}

1060 : [기초-비트단위논리연산] 비트단위로 AND 하여 출력하기(설명)

입력

3 5

출력

1

풀이

& 를 사용하여 두 수의 2진수값을 비교하여 출력 형식에 맞게 출력

& : 두 개의 정수값을 2진수로 변환하고 비교하여 같은 자릿값에 1이 있으면 1
다르거나 둘 다 0이면 0으로 정리하여 계산

#include <stdio.h>

int main() {
    int a, b;
    scanf("%d %d", &a, &b);

    printf("%d", a&b);

    return 0;
}

1061 : [기초-비트단위논리연산] 비트단위로 OR 하여 출력하기(설명)

입력

3 5

출력

7

풀이

| 를 사용하여 두 수의 2진수값을 비교하여 출력 형식에 맞게 출력

| : 두 개의 정수값을 2진수로 변환하고 비교하여 같은 자릿값에 0이 있으면 0,
둘 중 하나가 1 이거나 둘 다 1인 경우 1로 계산

#include <stdio.h>

int main() {
    int a, b;
    scanf("%d %d", &a, &b);

    printf("%d", a | b);

    return 0;
}

1062 : [기초-비트단위논리연산] 비트단위로 XOR 하여 출력하기(설명)

입력

3 5

출력

6

풀이

^ 를 사용하여 두 수의 2진수값을 비교하여 출력 형식에 맞게 출력

^ : 두 개의 정수값을 2진수로 변환하고 비교하여 같은 자릿값에
서로 다른 수가 있으면 1, 같은 수가 있으면 0으로 계산

#include <stdio.h>

int main() {
    int a, b;
    scanf("%d %d", &a, &b);

    printf("%d", a^b);

    return 0;
}

1063 : [기초-삼항연산] 두 정수 입력받아 큰 수 출력하기(설명)

입력

123 456

출력

456

풀이

두 수를 입력받아 더 큰 수를 출력하도록 삼항연산을 통해 출력

(조건식) ? 실행1 : 실행2
조건식이 참이면 실행1 을 거짓이면 실행2 를 실행

#include <stdio.h>

int main() {
    int a, b;
    scanf("%d %d", &a, &b);

    (a > b) ? printf("%d", a) : printf("%d", b);

    return 0;
}

1064 : [기초-삼항연산] 정수 3개 입력받아 가장 작은 수 출력하기(설명)

입력

3 -1 5

출력

-1

풀이

삼항연산을 중첩시켜 3개의 수를 비교한 후, 가장 작은 값을 출력

#include <stdio.h>

int main() {
    int n1, n2, n3;
    scanf("%d %d %d", &n1, &n2, &n3);
    
    (n1 > n2) ? (n3 > n2) ? printf("%d", n2) : printf("%d", n3) : (n1 > n3) ? printf("%d", n3) : printf("%d", n1);

    return 0;
}

1065 : [기초-조건/선택실행구조] 정수 3개 입력받아 짝수만 출력하기(설명)

입력

1 2 4

출력

2
4

풀이

조건문을 이용해 2 로 나누었을때, 나머지가 0인 수들만 검사하여 출력

#include <stdio.h>

int main() {
    int arr[3];

    for (int i = 0; i < 3; i++) {
        scanf("%d", &arr[i]);
    }

    for (int i = 0; i < 3; i++) {
        if (arr[i] % 2 == 0)
            printf("%d ", arr[i]);
    }
    
    return 0;
}

1066 : [기초-조건/선택실행구조] 정수 3개 입력받아 짝/홀 출력하기(설명)

입력

1 2 8

출력

odd
even
even

풀이

조건문을 이용해 2 로 나누었을때, 나머지가 0인 수들 even 아니면 odd로 출력

#include <stdio.h>

int main() {
    int arr[3];

    for (int i = 0; i < 3; i++) {
        scanf("%d", &arr[i]);
    }

    for (int i = 0; i < 3; i++) {
        if (arr[i] % 2 == 0)
            printf("even\n");
        else
            printf("odd\n");
    }
    
    return 0;
}

1067 : [기초-조건/선택실행구조] 정수 1개 입력받아 분석하기(설명)

입력

-2147483648

출력

minus
even

풀이

0보다 크면 plus, 작으면 minus를 출력
조건문을 이용해 2 로 나누었을때, 나머지가 0인 수들 even 아니면 odd로 출력

#include <stdio.h>

int main() {
    int num;
    scanf("%d", &num);
    
    if (num > 0)
    {
        if (num % 2 == 0)
        {
            printf("plus\neven");
        }else
        {
            printf("plus\nodd");
        }
    }else
    {
        if (num % 2 == 0)
        {
            printf("minus\neven");
        }else
        {
            printf("minus\nodd");
        }
    }
    
    return 0;
}

1068 : [기초-조건/선택실행구조] 정수 1개 입력받아 평가 출력하기(설명)

입력

73

출력

B

풀이

점수를 입력받고, 조건물을 통해 판단하여 등급 출력

#include <stdio.h>

int main() {
    int score;
    scanf("%d", &score);
    
    if (score >= 90) {
        printf("A");
    }else if (score >= 70) {
        printf("B");
    }else if (score >= 40) {
        printf("C");
    }else {
        printf("D");
    }
    
    return 0;
}

1069 : [기초-조건/선택실행구조] 평가 입력받아 다르게 출력하기(설명)

입력

A

출력

best!!!

풀이

switch ~ case 을 이용하여 입력받은 문자를 판단하여 올바른 문장 출력

#include <stdio.h>

int main() {
    char c;
    c = getchar();
    
    switch(c) {
        case 'A' : printf("best!!!"); break;
        case 'B' : printf("good!!"); break;
        case 'C' : printf("run!"); break;
        case 'D' : printf("slowly~"); break;
        default : printf("what?"); break;
    }

    return 0;
}

1070 : [기초-조건/선택실행구조] 월 입력받아 계절 출력하기(설명)

입력

12

출력

winter

풀이

break를 사용하지 않으면 밑에 케이스까지 출력되는 것을 이용하여,
지정된 형식에 맞게 출력

#include <stdio.h>

int main() {
    int num;
    scanf("%d", &num);
    
    switch (num) {
        case 12 :
        case 1 :
        case 2 : printf("winter"); break;
        case 3 :
        case 4 :
        case 5 : printf("spring"); break;
        case 6 :
        case 7 :
        case 8 : printf("summer"); break;
        case 9 :
        case 10 :
        case 11 : printf("fall"); break;
    }
}

1070 : [기초-조건/선택실행구조] 월 입력받아 계절 출력하기(설명)

입력

12

출력

winter

풀이

break를 사용하지 않으면 밑에 케이스까지 출력되는 것을 이용하여,
지정된 형식에 맞게 출력

#include <stdio.h>

int main() {
    int num;
    scanf("%d", &num);
    
    switch (num) {
        case 12 :
        case 1 :
        case 2 : printf("winter"); break;
        case 3 :
        case 4 :
        case 5 : printf("spring"); break;
        case 6 :
        case 7 :
        case 8 : printf("summer"); break;
        case 9 :
        case 10 :
        case 11 : printf("fall"); break;
    }
}

1071 : [기초-반복실행구조] 0 입력될 때까지 무한 출력하기1(설명)

입력

7 4 2 3 0 1 5 6 9 10 8

출력

7
4
2
3

풀이

goto 레이블을 이용하여 입력받은 수를 출력, 0이 입력되면 정지

(이름): : 시작 위치 지정
goto (이름); : 지정된 위치로 이동하여 재실행

#include <stdio.h>

int main() {
    int n;
    
    P:

    scanf("%d", &n);
    if (n != 0)
    {
        printf("%d\n", n);
        goto P;
    }   
    
    return 0;
}

1072 : [기초-반복실행구조] 정수 입력받아 계속 출력하기(설명)

입력

5
1 2 3 4 5

출력

1
2
3
4
5

풀이

입력받은 수를 goto가 실행될 때마다 1씩 감소, 0이 되면 종료시킴으로서
지정된 회수만큼 반복
입력된 수를 하나씩 출력

(이름): : 시작 위치 지정
goto (이름); : 지정된 위치로 이동하여 재실행

#include <stdio.h>

int main() {
    int num1, num2; 
    scanf("%d", &num1);

    print_num:
    
    scanf("%d", &num2);
    printf("%d\n", num2);
    num1 -= 1;
    
    if(num1 > 0)
    {
        goto print_num;
    }
    
    return 0;
}

1073 : [기초-반복실행구조] 0 입력될 때까지 무한 출력하기2(설명)

입력

7 4 2 3 0 1 5 6 9 10 8

출력

7
4
2
3

풀이

while 반복문을 이용하여 입력받은 값을 출력
if 조건문을 통해 0이 입력되면 종료

#include <stdio.h>
#include <stdbool.h>

int main() {
    int num;

    while(true)
    {
        scanf("%d", &num);

        if (num == 0)
            break;

        printf("%d\n", num);
    }

    return 0;
}

1074 : [기초-반복실행구조] 정수 1개 입력받아 카운트다운 출력하기1(설명)

입력

5

출력

5
4
3
2
1

풀이

whlie 반복문을 활용하여 n을 입력받은 후 1씩 감소시켜 n값이 0이 되기 전까지 반복

#include <stdio.h>

int main() {
    int n;
    scanf("%d", &n);
    while(n != 0)
    {
        printf("%d\n", n);
        --n;
    }

    return 0;
}

1075 : [기초-반복실행구조] 정수 1개 입력받아 카운트다운 출력하기2(설명)

입력

5

출력

5
4
3
2
1

풀이

whlie 반복문을 활용하여 n을 입력받은 후 1씩 감소시켜 n값이 0보다 작아지기 전까지 반복

#include <stdio.h>

int main() {
    int n;
    scanf("%d", &n);
    while(n > 0)
    {
        n = n - 1;
        printf("%d\n", n);
    }

    return 0;
}

1076 : [기초-반복실행구조] 문자 1개 입력받아 알파벳 출력하기(설명)

입력

f

출력

a b c d e f

풀이

'a'의 아스키코드 값인 97을 이용하여 입력된 문자의 아스키코드 값이 될 때까지 반복 출력

#include <stdio.h>

int main() {
    char c;
    c = getchar();

    for (int i = 97; i <= c; i++) {
        printf("%c ", i);
    }

    return 0;
}

1077 : [기초-반복실행구조] 정수 1개 입력받아 그 수까지 출력하기(설명)

입력

4

출력

0
1
2
3
4

풀이

i값을 0부터 시작하여 입력값이랑 같아질때까지 증가시키며 출력

#include <stdio.h>

int main() {
    int a;
    scanf("%d", &a);

    for (int i = 0; i <= a; i++) {
        printf("%d\n", i);
    }

    return 0;
}

1078 : [기초-종합] 짝수 합 구하기(설명)

입력

5

출력

6

풀이

입력받은 수까지 i 값을 반복적으로 증가시키며 if 조건문에서 2로 나누었을때 나머지가 0이 되는 값들을 모두 더하여 출력

#include <stdio.h>

int main() {
    int sum=0;
    int n;
    scanf("%d", &n);
    
    for(int i = 1; i <= n; i++)
    {
        if (i % 2 == 0)
            sum = sum + i;
    }
    
    printf("%d", sum);

    return 0;
}

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

입력

x b k d l q g a c

출력

x
b
k
d
l
q

풀이

문자들은 입력받고, 입력받은 문자를 출력
if 조건문을 통해 q가 입력되었을 경우 q를 출력하고 프로그램 종료

#include <stdio.h>
#include <stdbool.h>

int main() {
    char c;

    while (true)
    {
        scanf("%c", &c);
        
        printf("%c", c);
        
        if (c == 'q')
        {
            return 0;
        }

    }

    return 0;
}

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

입력

55

출력

10

풀이

반복문을 통해 1부터 숫자를 더하여 조건문을 통해 입력한 숫자보다 같거나 커질때를
판단하고, 마지막으로 더한 수를 출력

#include <stdio.h>
#include <stdbool.h>

int main() {
    int num, sum = 0;
    scanf("%d", &num);

    for (int i = 1; i < num; i++)
    {
        sum += i;
        if (sum >= num)
        {
            printf("%d", i);

            break;
        }
    }

    return 0;
}

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

입력

2 3

출력

1 1
1 2
1 3
2 1
2 2
2 3

풀이

중첩 반복문을 통해 각각 i는 첫번째 입력값, j는 두번째 입력값과 같아질 때까지
더하며 반복 출력

#include <stdio.h>
#include <stdbool.h>

int main() {
    int num1, num2;
    scanf("%d %d", &num1, &num2);

    for (int i = 1; i <= num1; i++)
    {
        for (int j = 1; j <= num2; j++)
        {
            printf("%d %d\n", i, j);
        }
    }

    return 0;
}

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

입력

B

출력

B1=B
B
2=16
B3=21
B
4=2C
B5=37
B
6=42
B7=4D
B
8=58
B9=63
B
A=6E
BB=79
B
C=84
BD=8F
B
E=9A
B*F=A5

풀이

중첩 반복문을 통해 각각 입력받은 정수의 단을 출력하는 프로그램을 작성한 후,
16진수를 출력하고 받도록 %x를 이용

#include <stdio.h>

int main() {
    int num;
    scanf("%X", &num);

    for (int i = 1; i <= 15; i++)
    {
        printf("%X*%X=%X\n", num, i, num*i);
    }

    return 0;
}

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

입력

9

출력

1 2 X 4 5 X 7 8 X

풀이

for 반복문을 통해 1부터 입력받은 수까지 반복 출력
if 조건문을 통해 3으로 나누어떨어지는 값은 X로 출력

#include <stdio.h>

int main() {
    int i, num;
    scanf("%d", &num);

    for (i = 1; i <= num; i++)
    {
        if (i % 3 == 0)
            printf("X ");
        else
            printf("%d ", i);
    }

    return 0;
}

1084 : [기초-종합] 빛 섞어 색 만들기(설명)

입력

2 2 2

출력

0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
8

풀이

삼중첩 반복문을 이용하여 주사위 경우의 수와 같은 방식으로 출력
sum의 값이 한 번 더 더해짐으로 마지막에 sum값에서 1을 빼준 후 개수 출력

#include <stdio.h>
#include <stdbool.h>

int main() {
    int num1, num2, num3; 
    int sum = 1;
    scanf("%d %d %d", &num1, &num2, &num3);

    for (int x = 0; x < num1; x++)
    {
        for (int y = 0; y < num2; y++)
        {
            for (int z = 0; z < num3; z++)
            {
                sum++;
                printf("%d %d %d\n", x, y, z);
            }
        }
    }

    printf("%d", sum-1);

    return 0;
}

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

입력

44100 16 2 10

출력

1.7 MB

풀이

모든 값을 입력받은 후 곱하여 result값을 구한 후, MB단위를 뽑아야하므로 102410248으로 단위를 맞추어 출력

#include <stdio.h>
 
int main(){
    long long int h, b, c, s;
    double result;
    scanf("%lld %lld %lld %lld", &h, &b, &s, &c);
    
    result = h * b * s * c;
    
    printf("%.1lf MB", result/(8*1024*1024));
    
    return 0;
}

1086 : [기초-종합] 그림 파일 저장용량 계산하기(설명)

입력

1024 768 24

출력

2.25 MB

풀이

모든 값을 입력받은 후 곱하여 result값을 구한 후, MB단위를 뽑아야하므로 102410248으로 단위를 맞추어 출력

#include <stdio.h>

int main () {
    long long int w,h,b;
    double MB;
 
    
    scanf("%lld %lld %lld", &w, &h, &b );
    MB = (w*h*b);
 
    
    printf("%.02lf MB",MB/(8*1024*1024));
 
    return 0;
}

1087 : [기초-종합] 여기까지! 이제 그만~(설명)

입력

57

출력

66

풀이

1~n까지 반복하여 더하고 조건문을 통해 입력된 값보다 커지거나 같아지는 순간의 값을 판단하여 출력

#include <stdio.h>

int main() {
    int n, i;
    int s = 0;
    scanf("%d", &n);
    for(i = 1; ; i++)
    {
        s += i;
        if (s >= n)
            break;
    }

    printf("%d", s);

    return 0;
}

1088 : [기초-종합] 3의 배수는 통과?(설명)

입력

10

출력

1 2 4 5 7 8 10

풀이

1부터 시작하여 입력받은 수까지 반복
조건문으로 판단하여 3으로 나누어떨어질 경우 출력 제외

#include <stdio.h>

int main() {
    int n, i;
    int s = 0;
    scanf("%d", &n);
    for(i = 1; ; i++)
    {
        s += i;
        if (s >= n)
            break;
    }

    printf("%d", s);

    return 0;
}

1089 : [기초-종합] 수 나열하기1

입력

1 3 5

출력

13

풀이

반복문을 활용, 시작값부터 등차값을 계산하여 n번째 수를 출력

#include <stdio.h>

int main() {
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
    int arr[100];

    for (int i = 0; i < c; i++)
    {
        arr[i] = a+(i*b);
    }

    printf("%d", arr[c-1]);

    return 0;
}

1090 : [기초-종합] 수 나열하기2

입력

2 3 7

출력

1458

풀이

반복문을 활용, 시작값부터 등비값을 계산하여 n번째 수를 출력

#include <stdio.h>

int main() {
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
    int arr[100];

    for (int i = 0; i < c; i++)
    {
        arr[i] = a+(i*b);
    }

    printf("%d", arr[c-1]);

    return 0;
}

1091 : [기초-종합] 수 나열하기3

입력

1 -2 1 8

출력

-85

풀이

반복문을 활용, 시작 값 a에 m을 곱하고 d를 더한 수열의 n번째 수를 출력

#include <stdio.h>

int main() {
    long long int a, m, d, n;
    scanf("%ld %lld %lld %lld", &a, &m, &d, &n);
    
    for (int i = 0; i < n-1; i++) {
        a *= m;
        a += d;
    }
    
    printf("%lld", a);
    
    return 0;
}

1092 : [기초-종합] 함께 문제 푸는 날(설명)

입력

3 7 9

출력

63

풀이

입력된 세 수의 최소공배수를 구하는 프로그램 작성
모든 수가 나누어떨어지는 가장 작은 수를 반복문과 조건문을 통해 탐지

#include <stdio.h>
#include <stdbool.h>

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

    while(true)
    {
        i++;
        
        if ((i % a == 0) && (i % b == 0) && (i % c == 0)) {
            printf("%d", i);
            break;
        }

    }

    return 0;
}

1093 : [기초-1차원배열] 이상한 출석 번호 부르기1(설명)

입력

10
1 3 2 2 5 6 7 4 5 9

출력

1 2 1 1 2 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

풀이

학생 수 만큼 크기의 배열 선언 후, 0으로 모두 초기화
불린 인덱스 값의 출석번호에 1을 더함

#include <stdio.h>
int main() {
    int n, i, t;
    int a[24]={};
    scanf("%d", &n);
    for(i=1; i<=n; i++) {
        scanf("%d", &t);
        a[t]=a[t]+1; 
    }
    
    for(i=1; i<=23; i++) {
        printf("%d ", a[i]);
    }
    
    return 0;
}

1094 : [기초-1차원배열] 이상한 출석 번호 부르기2(설명)

입력

10
10 4 2 3 6 6 7 9 8 5

출력

5 8 9 7 6 6 3 2 4 10

풀이

학생 수 만큼 크기의 배열 선언 후, 0으로 모두 초기화
입력받은 값을 인덱스 출력을 이용해 뒤집어서 출력

#include <stdio.h>
int main() {
    int n, i;
    int a[10001]={};
    scanf("%d", &n);
    
    for(i=1; i<=n; i++)
        scanf("%d", &a[i]);
    
    for(i=n; i>=1; i--)
        printf("%d ", a[i]);

    return 0;
}

1095 : [기초-1차원배열] 이상한 출석 번호 부르기3(설명)

입력

10
10 4 2 3 6 6 7 9 8 5

출력

2

풀이

학생 수 만큼 크기의 배열 선언 후, 0으로 모두 초기화
입력받은 배열의 인덱스값을 비교하여 가장 작은 수 출력

#include <stdio.h>
int main() {
    int n, m;
    int a[10001]={};
    scanf("%d", &n);
    
    for(int i=1; i<=n; i++)
        scanf("%d", &a[i]);
    
    m = a[1];
    for(int i=1; i<n; i++) {
        if (a[i] < m) {
            m = a[i];
        }else {
            
        }
    }
    printf("%d", m);

    return 0;
}

1096 : [기초-2차원배열] 바둑판에 흰 돌 놓기(설명)

입력

5
1 1
2 2
3 3
4 4
5 5

출력

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

풀이

입력받은 회수만큼 반복하여 정수 두 개를 입력받기
입력받은 좌표값의 0을 1로 변경

#include <stdio.h>

int main() {
    int arr[20][20];
    int x, a, b;
    scanf("%d", &x);

    for (int i = 1; i < 20; i++)
    {
        for (int j = 1; j < 20; j++)
        {
            arr[i][j] = 0;
        }
    }

    for (int i = 0; i < x; i++)
    {
        scanf("%d %d", &a, &b);
        arr[a][b] = 1;
    }

    for (int i = 1; i < 20; i++)
    {
        for (int j = 1; j < 20; j++)
        {
            printf("%d ", arr[i][j]);
        }

        printf("\n");
    }
    

    return 0;
}

1097 : [기초-2차원배열] 바둑알 십자 뒤집기(설명)

입력

0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
2
10 10
12 12

출력

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

풀이

19x19 사이즈의 바둑판에 각각 백돌과 흑돌의 위치를 입력받기
입력받은 회수만큼 정수를 두 개씩 입력받기
입력받은 x좌표, y좌표의 돌을 각각 다른색의 돌로 바꿔서 배치
바뀐 바둑판 출력하기

#include <stdio.h>

int main() {
    int n, i, j, x, y;
    int a[20][20]={};
        for(i = 1; i <= 19; i++)
            for(j = 1; j <= 19; j++)
                scanf("%d", &a[i][j]);

    scanf("%d", &n);

    for(i = 1; i <= n; i++)
    {
        scanf("%d %d", &x, &y);
        for(j = 1; j <= 19; j++)
        {
            if(a[x][j]==0)
                a[x][j] = 1;
            else
                a[x][j] = 0;
        }
    
    for(j=1; j<=19; j++)
        {
            if(a[j][y]==0)
                a[j][y]=1;
            else
                a[j][y] = 0;
        }
    }
    
    for (i = 1; i <= 19; i++)
    {
        for (j = 1; j <= 19; j++)
        {
            printf("%d ", a[i][j]);
        }
        printf("\n"); //줄 바꾸기
    }
    
    return 0;
}

1098 : [기초-2차원배열] 설탕과자 뽑기

입력

5 5
3
2 0 1 1
3 1 2 3
4 1 2 5

출력

1 1 0 0 0
0 0 1 0 1
0 0 1 0 1
0 0 1 0 1
0 0 0 0 1

풀이

입력받은 크기의 2차원 배열을 모두 0으로 초기화
입력받은 회수만큼 4개의 정수를 입력받기
지정된 규칙에 따라 해당되는 위치를 1로 변경
2차원 배열 출력

#include <stdio.h>
 
int main()
{
    int matrix[100][100] = { 0, };
    
    int h,w,n,l,d,x,y;
    
    scanf("%d %d",&h,&w);
    scanf("%d",&n);
    
    for(int i = 1; i <= n; i++){
        scanf("%d %d %d %d",&l,&d,&x,&y);
        if(d == 0){
            for(int j = 0; j<l; j++){
                matrix[x][y+j] = 1;
            }
        }
        else{
            for(int j = 0; j<l; j++){
                matrix[x+j][y] = 1;
            }
        }
    }
    
    for (int i = 1; i <= h; i++)
    {
        for (int j = 1; j <= w; j++)
        {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }
    
    return 0;
}

1099 : [기초-2차원배열] 성실한 개미

입력

1 1 1 1 1 1 1 1 1 1
1 0 0 1 0 0 0 0 0 1
1 0 0 1 1 1 0 0 0 1
1 0 0 0 0 0 0 1 0 1
1 0 0 0 0 0 0 1 0 1
1 0 0 0 0 1 0 1 0 1
1 0 0 0 0 1 2 1 0 1
1 0 0 0 0 1 0 0 0 1
1 0 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1

출력

1 1 1 1 1 1 1 1 1 1
1 9 9 1 0 0 0 0 0 1
1 0 9 1 1 1 0 0 0 1
1 0 9 9 9 9 9 1 0 1
1 0 0 0 0 0 9 1 0 1
1 0 0 0 0 1 9 1 0 1
1 0 0 0 0 1 9 1 0 1
1 0 0 0 0 1 0 0 0 1
1 0 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1

풀이

미로상자의 구조를 입력받기
입력받은 미로상자의 2,2 칸에서 시작
오른쪽으로 이동 후, 만약 오른쪽이 1이면 다시 원상복귀
오른쪽과 아래가 모두 1일 경우 중지
2에 닿을 때까지 무한 반복
모든 작업이 수행된 후, 미로상자를 출력

#include <stdio.h>
 
int main()
{
    int matrix[11][11] = {};  //[세로][가로]
    for(int j = 1; j<=10; j++ ){
        for(int i = 1; i<=10; i++ ){
            scanf("%d ",&matrix[j][i]);
        }
    }
    
    int x,y;
    x = 2;
    y = 2;
    
    while(1){
 
        
        if(matrix[x][y] == 0){
            matrix[x][y] = 9;
            y ++;
        }
        if(matrix[x][y] == 1){
            y --;
            x++;
        }
        
        if(matrix[x][y] == 2){
            matrix[x][y] = 9;
            break;
        }
        else if(matrix[x][y+1] == 1 && matrix[x+1][y] == 1){
            if(matrix[x][y] == 0){
                matrix[x][y] = 9;
            }
            break;
        }
        
    }
    
    for(int i = 1; i <= 10; i++){
        for(int j =1; j <= 10; j++){
            printf("%d ",matrix[i][j]);
        }
        printf("\n");
    }
    
    return 0;
}
profile
배고파요 ..

0개의 댓글