[Layer7] C언어 추가과제

cette·2025년 5월 2일
0

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

C/C++언어에서 가장 기본적인 명령이 출력문이다.
printf()를 이용해 다음 단어를 출력하시오.
Hello

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

printf를 사용해서 hello 를 출력해줬다

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

이번에는 공백()을 포함한 문장을 출력한다.
다음 문장을 출력해보자.
Hello World

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

printf를 사용해서 hello world를 출력해줬다

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

이번에는 줄을 바꿔 출력하는 출력문을 연습해보자.
다음과 같이 줄을 바꿔 출력해야 한다.
Hello
World
(두 줄에 걸쳐 줄을 바꿔 출력)

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

printf를 사용해서 hello world를 출력하는데 /n을 사용해서 줄넘김을 해줬다

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

이번에는 작은 따옴표(single quotation mark)가 들어있는
특수한 형태의 출력문에 대한 연습을 해보자.
다음 문장을 출력하시오.
'Hello'

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

\를 사용하면 따옴표를 출력할 수 있다

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

이번에는 큰따옴표(double quotation mark)가 포함된 출력문을 연습해보자.
다음 문장을 출력하시오.
"Hello World"

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

\를 사용하면 따옴표를 출력할 수 있다 printf문을 사용해서 hello world를 출력해줬다

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;
}

\를 사용하여 따옴표안에 C:\Download\hello.cpp 를 출력해준다

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

이번에는 특수문자를 출력하는 연습을 해보자.
키보드로 입력할 수 없는 다음 모양을 출력해보자.
┌┬┐
├┼┤
└┴┘

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

u250C =┌ u252C = ┬ u2510 = ┐임을 이용하여 특수문자를 출력해줬다

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

정수형(int)으로 변수를 선언하고, 변수에 정수값을 저장한 후
변수에 저장되어 있는 값을 그대로 출력해보자.

int main(){
    int n;
    scanf("%d", &n);
    printf("%d", n);
    return 0;
}

scanf를 통해 정수형 n을 입력받고 printf를 통해 n을 출력해준다

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

문자형(char)으로 변수를 하나 선언하고, 변수에 문자를 저장한 후
변수에 저장되어 있는 문자를 그대로 출력해보자.

int main(){
    char x;
    scanf("%c", &x);
    printf("%c", x);
    return 0;
}

scanf를 통해 문자형 x을 %c로 입력받고 printf를 통해 x을 출력해준다

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

실수형(float)로 변수를 선언하고 그 변수에 실수값을 저장한 후
저장되어 있는 실수값을 출력해보자.

int main(){
    float x;
    scanf("%f", &x);
    printf("%f", x);
    return 0;
}

scanf를 통해 실수형 x을 %f로 입력받고 printf를 통해 x을 출력해준다

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

정수(int) 2개를 입력받아 그대로 출력해보자.

int main(){
    int a, b;
    scanf("%d%d", &a, &b); 
    printf("%d %d", a, b);
    return 0;
}

scanf를 통해 정수형 a,b를 입력받고 printf를 통해 a,b를 출력해준다

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

2개의 문자(ASCII CODE)를 입력받아서 순서를 바꿔 출력해보자.

int main(){
    char x, y;
	scanf("%c %c", &x, &y);
	printf("%c %c", y, x);
    return 0;
}

scanf를 통해 문자형 x,y를 입력받고 printf를 통해 y,x를 순서를 바꿔서 출력해준다

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

실수(float) 1개를 입력받아 저장한 후,
저장되어 있는 값을 소수점 셋 째 자리에서 반올림하여
소수점 이하 둘 째 자리까지 출력하시오.

int main(){
    float x;
	scanf("%f", &x);
	printf("%.2f",x);
    return 0;
}

실수형 x를 입력받고 printf문에서 .2를 통해 소숫점 2째 자리에서 반올림하여 출력해준다

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

int형 정수 1개를 입력받아 공백을 사이에 두고 3번 출력해보자.

int main(){
    int a;
	scanf("%d", &a);
    printf("%d %d %d", a, a, a);
    return 0;
}

실수형 a를 입력받고 printf문에서 a를 공백을 두고 3번 출력해준다

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

어떤 형식에 맞추어 시간이 입력될 때, 그대로 출력하는 연습을 해보자.

int main(){
    int h,m;
    scanf("%d:%d", &h, &m); 
    printf("%d:%d", h, m);
    return 0;
}

scanf를 통해 문자형 h,m를 입력받고 printf를 통해 h,m을 :를 두고 출력해준다

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

년, 월, 일을 입력받아 지정된 형식으로 출력하는 연습을 해보자.

int main(){
    int y,m,d;
    scanf("%d.%d.%d", &y, &m, &d); 
    printf("%04d.%02d.%02d", y, m, d);
    return 0;
}

scanf를 통해 문자형 y, m ,d를 입력받고 printf를 통해 y, m ,d를 .을 두고 출력하는데 소숫점 둘째자리에서 반올림 해준다

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

주민번호는 다음과 같이 구성된다.
XXXXXX-XXXXXXX
앞의 6자리는 생년월일(yymmdd)이고 뒤 7자리는 성별, 지역, 오류검출코드이다.
주민번호를 입력받아 형태를 바꿔 출력해보자.

int main(){
    int f,s;
    scanf("%d-%d", &f, &s); 
    printf("%06d%06d", f,s);
    return 0;
}

scanf를 통해 문자형 f, s를 -사이에 두고 입력받고 printf를 통해 f,s를 출력하는데 06을 통해 6자리를 고정으로 출력해준다

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

1개의 단어를 입력받아 그대로 출력해보자.

int main(){
    char data[51]="";
    scanf("%s", data);
    printf("%s",data);
    return 0;
}

문자열 배열으로 50으로 크기를 고정해주고 scanf를 통해 data에 한번 입력받고 그대로 출력해준다

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

공백 문자가 포함되어 있는 문장을 입력받고 그대로 출력하는 연습을 해보자.

#include <stdio.h>

int main() {
    char data[2001];
    fgets(data, 2000, stdin);
    printf("%s", data);
    return 0;
}

문자열 배열으로 data를 50으로 크기를 고정해주고 fgets 통해 data를 공백문자가 포함 되어있는 문장을 입력받고 그대로 출력해준다

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

실수 1개를 입력받아 정수 부분과 실수 부분으로 나누어 출력한다.

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

a와 b를 선언해주고 .을 기준으로 scanf를 통해 입력받는다. printf를 \n로 나눠서 a는 정수 부분, b는 실수 부분을 출력해준다.

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

단어를 1개 입력받는다. 입력받은 단어(영어)의 각 문자를 한줄에 한 문자씩 분리해 출력한다.

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

문자열 d를 입력받고, for문을 통해 문자열이 끝날 때까지 한 글자씩 문자 형태로 줄 바꿔 출력해준다.

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

다섯 자리의 정수 1개를 입력받아 각 자리별로 나누어 출력한다.

int main(){
    int a,b,c,d,e;
    scanf("%1d%1d%1d%1d%1d", &a, &b, &c, &d, &e);
    printf("[%-05d]\n[%-04d]\n[%-03d]\n[%0-2d]\n[%-01d]",a*10000,b*1000,c*100,d*10,e);
    return 0;
}

scanf에서 %1d를 5번 써서 다섯 자리 숫자를 한 자리씩 a부터 e에 입력받고 각각 10000, 1000, 100, 10, 1을 곱해 자릿값을 만든다.
printf에서 %-0Nd 형식을 사용해 왼쪽 정렬되도록 자릿수를 맞춰 각값을 대괄호 안에 출력한다.

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

입력되는 시:분:초 에서 분만 출력해보자.

int main(){
    int h, m, s;
    scanf("%d:%d:%d", &h, &m, &s);
    printf("%d",m);
}

scanf를 통해 h, m, s를 입력받고 printf로 m만 출력해준다

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

년월일을 출력하는 방법은 나라마다, 형식마다 조금씩 다르다.
년월일(yyyy.mm.dd)를 입력받아, 일월년(dd-mm-yyyy)로 출력해보자.

int main(){
    int y, m, d;
    scanf("%d.%d.%d", &y, &m, &d);
    printf("%02d-%02d-%04d", d, m, y);
}

연,월,일을 scanf로 y.m.d 형식으로 입력받아 일을 두 자리, 월을 두 자리, 연도를 네 자리로 일 월 연도 순으로 출력한다.

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

정수 1개를 입력받아 그대로 출력해보자.

int main(){
    unsigned int n;
    scanf("%u", &n);
    printf("%u", n);
}

usigne int형을 입력받고 printf를 통해 그대로 출력한다

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

실수 1개를 입력받아 그대로 출력해보자.

int main(){
    double d;
    scanf("%lf", &d);
    printf("%.11lf", d);
}

실수를 입력받고 11자릿수로 printf를 통해 출력한다

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

정수 1개를 입력받아 그대로 출력해보자.

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

}

long long int형을 선언하고 long long int 형이니 lld로 입력받고 출력해준다

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

10진수를 입력받아 8진수(octal)로 출력해보자.

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

10진수는 d, 8진수는 o이다. d로 입력받고 o로 출력한다

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

10진수를 입력받아 16진수(hexadecimal)로 출력해보자.

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

10진수는 d, 16진수는 x이다. d로 입력받고 x로 출력한다

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

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

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

10진수는 d, 16진수는 x이다. d로 입력받고 x로 출력한다 여기서 대문자 x를 통해 대문자를 출력한다

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

8진수로 입력된 정수 1개를 10진수로 바꾸어 출력해보자.

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

8진수는 o, 10진수는 d이다. o로 입력받고 d로 출력한다.

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

16진수로 입력된 정수 1개를 8진수로 바꾸어 출력해보자.

int main(){
    int a;
    scanf("%x",&a);
    printf("%o",a);
}

16진수는 x, 16진수는 o이다. x로 입력받고 o로 출력한다.

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

영문자 1개를 입력받아 아스키 코드표의 10진수 값으로 출력해보자.

int main(){
    char a;
    scanf("%c",&a);
    printf("%d",a);
}

char형으로 입력받고, printf를 통해 정수형으로 출력해주는 아스키코드를 사용하였다

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

10진 정수 1개를 입력받아 아스키 문자로 출력해보자.

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

정수형 a를 입력받고 아스키 문자로 입력받기 위해 %c로 출력한다

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

정수 2개를 입력받아 합을 출력하는 프로그램을 작성해보자.

int main(){
    long long int a,b;
    scanf("%lld %lld",&a,&b);
    printf("%lld",a+b);    
}

long long int 형으로 a, b를 선언하고 lld를 통해 scanf로 입력받는다. 그 후에 둘을 더해 printf로 출력한다

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

정수 2개를 입력받아 합을 출력해보자.

int main(){
    long long int a,b;
    scanf("%lld %lld",&a,&b);
    printf("%lld",a+b);    
}

long long int 형으로 a, b를 선언하고 lld를 통해 scanf로 입력받는다. 그 후에 둘을 더해 printf로 출력한다

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

입력된 정수의 부호를 바꿔 출력해보자.

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

a를 scanf로 입력받고 -를 붙인 printf문에서 a를 출력한다

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

영문자 1개를 입력받아 그 다음 문자를 출력해보자.
영문자 'A'의 다음 문자는 'B'이고, 영문자 '0'의 다음 문자는 '1'이다.

int main(){
    char a;
    scanf("%c", &a);
    printf("%c",a+1);
}

a를 scanf 문자열로 입력받고 printf문에서 a+1인 다음문자를 출력해준다

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

정수 2개(a, b) 를 입력받아 a를 b로 나눈 몫을 출력해보자.

int main(){
    int a, b;
    scanf("%d %d", &a, &b);
    printf("%d\n", a / b);
    return 0;
}

정수 a,b를 입력받아 printf문에서 a와 b를 나눈 몫을 /를 통해 출력한다

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

정수 2개(a, b) 를 입력받아 a를 b로 나눈 나머지를 출력해보자.

int main(){
    int a, b;
    scanf("%d %d", &a, &b);
    printf("%d\n", a % b);
    return 0;
}

정수 a,b를 입력받아 printf문에서 a와 b를 나눈 나머지를 %를 통해 출력한다

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

정수를 1개 입력받아 1만큼 더해 출력해보자.

int main() {
    long long int a;
    scanf("%lld", &a);
    ++a;
    printf("%lld", a);
    return 0;
}

long long int형인 a를 입력받고 1을 더한 a를 printf를 통해 출력한다

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

정수 2개(a, b)를 입력받아 합, 차, 곱, 몫, 나머지, 나눈 값을 자동으로 계산해보자.

int main() {
    long long a, b;
    scanf("%lld %lld", &a, &b);
    printf("%lld\n", a + b);
    printf("%lld\n", a - b);
    printf("%lld\n", a * b);
    printf("%lld\n", a / b);
    printf("%lld\n", a % b);
    printf("%.2f\n", (double)a / (double)b);
    return 0;
}

long long int형인 a를 입력받고 printf를 통해 두 수의 합, 차, 곱, 몫, 나머지를 출력한다

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

정수 3개를 입력받아 합과 평균을 출력해보자.

int main() {
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
    int sum = a + b + c;
    printf("%d\n", sum);
    float average = sum / 3.0;
    printf("%.1f\n", average);
    return 0;
}

정수 3개를 입력받아 a, b, c를 더한 sum을 출력하고 float으로 형변환을 해서 sum을 3으로 나눈 값을 소숫점 1번째 자리에서 반올림하여 출력해준다

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

정수 1개를 입력받아 2배 곱해 출력해보자.

int main() {
    int a;
    scanf("%d", &a);
    printf("%d\n", a << 1);
    return 0;
}

정수형 a를 입력받고 a를 비트시프트연산인 <<를 통해 2배 곱해서 출력해준다

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

정수 2개(a, b)를 입력받아 a를 2b배 곱한 값으로 출력해보자.

int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    printf("%d\n", a << b);
    return 0;
}

정수형 2개를 입력받아 a를 b의 두배만큼 곱해 출력해준다

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

두 정수(a, b)를 입력받아
a가 b보다 크면 1을, a가 b보다 작거나 같으면 0을 출력하는 프로그램을 작성해보자.

int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    printf("%d\n", a > b ? 1 : 0);
    return 0;
}

두 정수를 입력받아 a가 b보다 크면 1, 작으면 0을 출력하는 printf문을 실행한다

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

두 정수(a, b)를 입력받아
a와 b가 같으면 1을, 같지 않으면 0을 출력하는 프로그램을 작성해보자.

int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    printf("%d\n", a == b ? 1 : 0); 
    return 0;
}

a와 b를 입력받아 a가 b랑 같으면 1, 다르면 0을 출력하는 printf문을 실행한다

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

두 정수(a, b)를 입력받아
b가 a보다 크거나 같으면 1을, 그렇지 않으면 0을 출력하는 프로그램을 작성해보자.

int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    if(b >= a)
        printf("1");
    else
        printf("0");
    return 0;
}

a,b를 입력받아 b가 a보다 크거나 같으면 1을 출력하고 아니면 0을 출력한다

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

두 정수(a, b)를 입력받아
a와 b가 서로 다르면 1을, 그렇지 않으면 0을 출력하는 프로그램을 작성해보자.

int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    if(a != b)
        printf("1");
    else
        printf("0");
    return 0;
}

a,b를 입력받아 b가 a보다 크거나 같으면 1을 출력하고 아니면 0을 출력한다

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

1(true, 참) 또는 0(false, 거짓) 이 입력되었을 때
반대로 출력하는 프로그램을 작성해보자.

int main() {
    int a;
    scanf("%d", &a);
    if(a ==0)
        printf("1");
    else
        printf("0");
    return 0;
}

두 정수 a와 b를 입력받아, 두 값이 같으면 0을 출력하고 다르면 1을 출력하는 코드이다.

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

두 개의 참(1) 또는 거짓(0)이 입력될 때,
모두 참일 때에만 참을 출력하는 프로그램을 작성해보자.

int main() {
    int a,b;
    scanf("%d %d", &a,&b);
    if(a ==1 && b==1)
        printf("1");
    else
        printf("0");
    return 0;
}

두 정수 a와 b를 입력받아 두 값이 모두 1일 경우 1을 출력하고 그렇지 않으면 0을 출력한다

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

두 개의 참(1) 또는 거짓(0)이 입력될 때,
하나라도 참이면 참을 출력하는 프로그램을 작성해보자.

int main() {
    int a,b;
    scanf("%d %d", &a,&b);
    if(a ==1 || b==1)
        printf("1");
    else
        printf("0");
    return 0;
}

두 정수 a와 b를 입력받아 a 또는 b 중 하나라도 1이면 1을 출력하고, 둘 다 1이 아니면 0을 출력하는 코드이다.

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

두 가지의 참(1) 또는 거짓(0)이 입력될 때,
참/거짓이 서로 다를 때에만 참을 출력하는 프로그램을 작성해보자.

int main() {
    int a,b;
    scanf("%d %d", &a,&b); 
    if(a ==1 && b==0)
        printf("1");
    else if (a==0 && b==1)
        printf("1");
    else
        printf("0");
    return 0;
}

두 정수 a와 b를 입력받아, a가 1이고 b가 0이거나 a가 0이고 b가 1일때 1을 출력하고 아니면 0을 출력하는 코드이다.

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

두 개의 참(1) 또는 거짓(0)이 입력될 때,
참/거짓이 서로 같을 때에만 참이 계산되는 프로그램을 작성해보자.

int main() {
    int a,b;
    scanf("%d %d", &a,&b); 
    if(a ==0 && b==0)
        printf("1");
    else if (a==1 && b==1)
        printf("1");
    else
        printf("0");
    return 0;
}

이 코드는 두 정수 a와 b를 입력받아, a와 b가 모두 0이거나, a와 b가 모두 1일 때 1을 출력하고, 그 외의 경우에는 0을 출력한다

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

두 개의 참(1) 또는 거짓(0)이 입력될 때,
모두 거짓일 때에만 참이 계산되는 프로그램을 작성해보자.

int main() {
    int a,b;
    scanf("%d %d", &a,&b); 
    if(a ==0 && b==0)
        printf("1");
    else
        printf("0");
    return 0;
}

두 정수 a와 b를 입력받아, 둘 다 0이면 1을 출력하고, 그 외에는 0을 출력한다.

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

입력 된 정수를 비트단위로 참/거짓을 바꾼 후 정수로 출력해보자.

int main() {
    int a;
    scanf("%d", &a);
    printf("%d", ~a);
    return 0;
}

정수 a를 입력받아 a의 비트 반전 결과를 ~를 통해 출력한다.

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

입력된 정수 두 개를 비트단위로 and 연산한 후 그 결과를 정수로 출력해보자.

int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    printf("%d", a & b);
    return 0;
}

두 정수 a와 b를 입력받아 a와 b의 비트 and 연산 결과를 출력한다.

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

입력된 정수 두 개를 비트단위로 or 연산한 후 그 결과를 정수로 출력해보자.

int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    printf("%d\n", a | b);
    return 0;
}

두 정수 a와 b를 입력받아 a와 b의 비트 or 연산 결과를 출력한다.

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

입력된 정수 두 개를 비트단위로 xor 연산한 후 그 결과를 정수로 출력해보자.

int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    printf("%d\n", a ^ b);
    return 0;
}

두 정수 a와 b를 입력받아 a와 b의 비트 XOR 연산 결과를 출력한다.

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

입력된 두 정수 a, b 중 큰 값을 출력하는 프로그램을 작성해보자.
단, 조건문을 사용하지 않고 3항 연산자 ? 를 사용한다.

int main(){
    int a,b;
    scanf("%d %d",&a,&b);
    printf("%d", a>b ? a:b); 
}

이 코드는 두 정수 a와 b를 입력받아 a가 b보다 크면 a를, 아니면 b를 출력하는 삼항연산자를 통해 출력해준다.

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

입력된 세 정수 a, b, c 중 가장 작은 값을 출력하는 프로그램을 작성해보자. 단, 조건문을 사용하지 않고 3항 연산자 ? 를 사용한다.

int main(){
    int a,b,c;
    scanf("%d %d %d",&a,&b,&c);
    printf("%d", (a < b ? (a < c ? a : c) : (b < c ? b : c)));
}

정수 a, b, c를 입력받아 그 중에서 가장 작은 값을 출력하는 삼항연산자이다

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

세 정수 a, b, c가 입력되었을 때, 짝수만 출력해보자.

int main(){
    int a,b,c;
    scanf("%d %d %d",&a,&b,&c);
    if(a%2==0){
     printf("%d\n", a);
    }
    if(b%2==0){
     printf("%d\n", b);
    }
    if(c%2==0){
     printf("%d\n", c);
    }
    return 0;
}

세 정수 a, b, c를 입력받아 각 값이 짝수일 경우 그 값을 출력한다.

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

세 정수 a, b, c가 입력되었을 때, 짝(even)/홀(odd)을 출력해보자.

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

    if(a % 2 == 0) 
    printf("even\n");
    else printf("odd\n");

    if(b % 2 == 0)
    printf("even\n");
    else printf("odd\n");

    if(c % 2 == 0)
    printf("even\n");
    else printf("odd\n");
    return 0;
}

세 정수 a, b, c를 입력받아 각각의 값이 짝수일 경우 "even"을 출력하고 홀수일 경우 "odd"를 출력한다.

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

정수 1개가 입력되었을 때, 음(minus)/양(plus)과 짝(even)/홀(odd)을 출력해보자.

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

    if(n > 0)
        printf("plus\n");
    else
        printf("minus\n");

    if(n % 2 == 0)
        printf("even\n");
    else
        printf("odd\n");
    return 0;
}

정수 n을 입력받아 n이 양수면 plus를, 아니면 minus를 출력한다. 또 n이 짝수면 even, 아니면 odd를 출력한다

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

점수(정수, 0 ~ 100)를 입력받아 평가를 출력해보자.
평가 기준
점수 범위 : 평가
90 ~ 100 : A
70 ~ 89 : B
40 ~ 69 : C
0 ~ 39 : D
로 평가되어야 한다.

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

정수 score를 입력받아, 점수에 따라 90 이상이면 "A" 70 이상이면 "B" 40 이상이면 "C" 그 외에는 "D"를 출력한다

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

평가를 문자(A, B, C, D, ...)로 입력받아 내용을 다르게 출력해보자.
평가 내용
평가 : 내용
A : best!!!
B : good!!
C : run!
D : slowly~
나머지 문자들 : what?

int main() {
    char a;
    scanf("%c", &a);
    switch(a) {
        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;
}

이 코드는 문자 a를 입력받아 그 값에 따라 A이면 "best!!!" B이면 "good!!" C이면 "run!"D이면 "slowly~" 그 외의 값이면 "what?"을 출력한다.

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

월이 입력될 때 계절 이름이 출력되도록 해보자.

월 : 계절 이름
12, 1, 2 : winter
3, 4, 5 : spring
6, 7, 8 : summer
9, 10, 11 : fall

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

month 값을 입력받아, 해당 월에 맞는 계절 12, 1, 2월은 "winter", 3, 4, 5월은 "spring", 6, 7, 8월은 "summer", 9, 10, 11월은 "fall"을 출력한다.
이 외의 입력은 아무것도 출력하지 않는다.

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

정수가 순서대로 입력된다.
-2147483648 ~ +2147483647, 단 개수는 알 수 없다.
0이 아니면 입력된 정수를 출력하고, 0이 입력되면 출력을 중단해보자.
while( ), for( ), do~while( ) 등의 반복문을 사용할 수 없다.

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

정수 n을 입력받아, n이 0이 아닌 동안 계속해서 입력받고 그 값을 출력한다. n이 0이면 종료된다.
goto reload;를 사용하여 입력을 반복한다

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

n개의 정수가 순서대로 입력된다.
-2147483648 ~ +2147483647, 단 n의 최대 개수는 알 수 없다.
n개의 입력된 정수를 순서대로 출력해보자.
while( ), for( ), do~while( ) 등의 반복문을 사용할 수 없다.

int main() {
    int n, m;
    scanf("%d", &n);
    reget:
    scanf("%d", &m);
    printf("%d\n", m);
    if (n-- != 1) goto reget;
    return 0;
}

이 코드는 n번 만큼 m을 입력받아 출력한다.처음에 n을 입력받고, n이 1일 때까지 m을 입력받아 출력한다. n-- != 1 조건이 참이면 goto reget;을 사용하여 반복한다 n이 1이 되면 종료된다.

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

정수가 순서대로 입력된다.
-2147483648 ~ +2147483647, 단 개수는 알 수 없다.
0이 아니면 입력된 정수를 출력하고, 0이 입력되면 출력을 중단해보자.

int main() {
    int n;
    while(1) {
        scanf("%d", &n);
        if (n == 0)
            break;
        else printf("%d\n", n);
    }
    return 0;
}

n을 입력받아, n이 0이 아니면 그 값을 출력하고, n이 0이면 반복문을 종료한다. while을 사용하여 무한 루프를 돌리고, n == 0일 때 break로 종료한다.

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

정수(1 ~ 100) 1개가 입력되었을 때 카운트다운을 출력해보자.
while(조건)
{
...
}
구조를 사용하자.

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

이 코드는 n을 입력받아, n이 0이 될 때까지 n을 출력하고, 매번 출력 후 n을 1씩 감소시킨다. n이 0이 되면 반복문이 종료된다. 이 코드에서 while 조건이 맞을 때마다 계속 출력되므로, n의 값이 한 번 출력된 후 n--로 값이 감소하고 계속 반복된다. 입력된 값에 따라 종료한다

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

정수(1 ~ 100) 1개가 입력되었을 때 카운트다운을 출력해보자.

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

처음에 n을 입력받고, n이 1이 될 때까지 반복해서 m을 입력받고 출력한다. goto reget을 사용하여 입력을 반복하고 n-- != 1 조건이 참이면 계속 반복하며, n이 1이 되면 종료한다

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

영문자(a ~ z) 1개가 입력되었을 때 그 문자까지의 알파벳을 순서대로 출력해보자.
참고
do
{ //코드블록
...
}while(조건); //do~while( ) ; 구조는 반드시 마지막에 세미콜론(;)을 붙여야 한다.
구조를 사용하자.

int main() {
    char ch, i = 'a';
    scanf("%c", &ch);
    do {
        printf("%c ", i);
        i++;
    } while(i <= ch);
    return 0;
}

문자 ch를 입력받고, a부터 ch까지의 알파벳을 순서대로 출력한다.
do-while 루프를 사용하여 i를 출력한 뒤 i가 ch보다 작거나 같을 때까지 반복한다.

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

정수(0 ~ 100) 1개를 입력받아 0부터 그 수까지 순서대로 출력해보자.
for((반복전 실행/준비 내용); (조건 검사 내용); (한번 실행한 후 처리할 작업))
{ //코드블록
...
}
반복 구조를 사용하자.

int main() {
    int n;
    scanf("%d", &n);
    for(int i = 0; i <= n; i++) {
        printf("%d\n", i);
    }
    return 0;
}

정수 n을 입력받아 0부터 n까지의 정수를 한 줄씩 출력한다.for 루프를 사용하여 i가 n까지 증가하며 출력된다.

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

정수(1 ~ 100) 1개를 입력받아 1부터 그 수까지 짝수의 합을 구해보자.

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

정수 n을 입력받고 1부터 n까지의 짝수들의 합을 계산하여 출력한다. for 루프를 사용하여 i가 n까지 증가하면서 짝수일 경우만 sum에 더하고 마지막에 그 합을 출력한다.

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

'q'가 입력될 때까지 입력한 문자를 계속 출력하는 프로그램을 작성해보자.

int main() {
    char c;
    while (1) {
        scanf(" %c", &c);
        printf("%c\n", c);
        if (c == 'q')
        break;
    }
    return 0;
}

문자 c를 입력받아 입력받은 문자를 출력하고, 만약 c가 q이면 반복문을 종료한다.
while을 사용해 무한 루프를 돌며, c == q일 때 break를 한다

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

1, 2, 3 ... 을 계속 더해 나갈 때,
그 합이 입력한 정수(0 ~ 1000)보다 같거나 작을 때까지
계속 더하는 프로그램을 작성해보자.

즉, 1부터 n까지 정수를 계속 더한다고 할 때,
어디까지 더해야 입력한 수보다 같거나 커지는지 알아보고자 하는 문제이다.

int main() {
    int n;
    scanf("%d", &n);
    int sum = 0;
    int i = 1;
    while (sum < n) {
        sum += i;
        i++;
    }
    printf("%d", i - 1);
    return 0;
}

정수 n을 입력받고 1부터 시작하여 차례대로 더해가면서 그 합이 n을 초과하지 않도록 하는 i 값을 출력한다.
while 루프를 사용하여 합 sum이 n 이상이 될때까지 i를 더하고, 그때의 i-1 값을 출력한다.

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

1부터 n까지, 1부터 m까지 숫자가 적힌
서로 다른 주사위 2개를 던졌을 때 나올 수 있는 모든 경우를 출력해보자.

int main() {
    int n, m;
    scanf("%d %d", &n, &m);
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            printf("%d %d\n", i, j);
        }
    }
    return 0;
}

두 정수 n과 m을 입력받아, i는 1부터 n까지, j는 1부터 m까지 반복하면서i 와 j를 출력한다.
첫 번째 for문에서 i를 증가시키고, 그 안에서 두 번째 for가 j를 증가시켜 각 i, j 값을 출력한다.

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

16진수(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F)를 배운
영일(01)이는 16진수끼리 곱하는 16진수 구구단?에 대해서 궁금해졌다.
A, B, C, D, E, F 중 하나가 입력될 때,
1부터 F까지 곱한 16진수 구구단의 내용을 출력해보자.
(단, A ~ F 까지만 입력된다.)

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;
}

16진수로 입력된 num을 받아 num과 1부터 15까지의 곱셈 결과를 16진수로 출력한다.
for를 사용하여 i를 1부터 15까지 증가시키며 num * i의 결과를 16진수 형식으로 출력한다.

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

3 6 9 게임을 하던 영일이는 3 6 9 게임에서 잦은 실수로 계속해서 벌칙을 받게 되었다.
3 6 9 게임의 왕이 되기 위한 마스터 프로그램을 작성해 보자.

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

정수 n을 입력받고 1부터 n까지의 수를 출력하는데 3의 배수일 경우 대신 X 를 출력한다.
for를 사용하여 i가 1부터 n까지 증가하고 i % 3 == 0일 때 X 를 출력하며 그렇지 않으면 i를 그대로 출력한다.

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

빨강(red), 초록(green), 파랑(blue) 빛을 섞어
여러 가지 빛의 색을 만들어 내려고 한다.
빨강(r), 초록(g), 파랑(b) 각각의 빛의 개수가 주어질 때,
(빛의 강약에 따라 0 ~ n-1 까지 n가지의 빛 색깔을 만들 수 있다.)
주어진 rgb 빛들을 다르게 섞어 만들 수 있는 모든 경우의 조합(r g b)과
총 가짓 수를 계산해보자.

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

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

세 개의 r, g, b를 입력받고 각 색상의 값 조합을 모두 출력한 뒤 총 조합의 수를 출력한다.
세 개의 for문을 사용하여 r, g, b을 대해 모든 가능한 조합을 출력하고 c를 증가시켜 총 조합 수를 계산한다.

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

1초 동안 마이크로 소리강약을 체크하는 수를 h
(헤르쯔, Hz 는 1초에 몇 번? 체크하는가를 의미한다.)
한 번 체크한 결과를 저장하는 비트 b
(2비트를 사용하면 0 또는 1 두 가지, 16비트를 사용하면 65536가지..)
좌우 등 소리를 저장할 트랙 개수인 채널 c
(모노는 1개, 스테레오는 2개의 트랙으로 저장함을 의미한다.)
녹음할 시간 s가 주어질 때, 필요한 저장 용량을 계산하는 프로그램을 작성해보자.
**
8 bit(비트) = 1byte(바이트) // 8bit=1Byte
1024 Byte(210 byte) = 1KB(킬로 바이트) // 1024bit=1KB
1024 KB(210 KB) = 1MB(메가 바이트)
1024 MB(210 MB) = 1GB(기가 바이트)
1024 GB(210 GB) = 1TB(테라 바이트)

int main() {
    int h, b, c, s;
    double size;
    scanf("%d %d %d %d", &h, &b, &c, &s);
    size = (double)h * b * c * s / 8 / 1024 / 1024;
    printf("%.1f MB", size);
    return 0;
}

네 개의 정수 h, b, c, s를 입력받아 주어진 값을 기반으로 파일 크기를 MB 단위로 계산하여 출력한다.

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

이미지의 가로 해상도 w, 세로 해상도 h, 한 픽셀을 저장하기 위한 비트 b 가 주어질 때, 압축하지 않고 저장하기 위해 필요한 저장 용량을 계산하는 프로그램을 작성해 보자. 예를 들어, 일반적인 1024 768 사이즈(해상도)의 각점에 대해
24비트(rgb 각각 8비트씩 3개)로 저장하려면 1024
768 * 24 bit의 저장 용량이 필요하다.
**
8 bit(비트) = 1byte(바이트) // 8bit=1Byte
1024 Byte(210 byte) = 1KB(킬로 바이트) // 1024bit=1KB
1024 KB(210 KB) = 1MB(메가 바이트)
1024 MB(210 MB) = 1GB(기가 바이트)
1024 GB(210 GB) = 1TB(테라 바이트)

int main() {
    int w, h, b;
    double size;

    scanf("%d %d %d", &w, &h, &b);

    size = (double)w * h * b / 8 / 1024 / 1024;

    printf("%.2f MB", size);
    return 0;
}

세개의 정수w,h,b를 입력받아 주어진 값을 기반으로 파일 크기를 MB 단위로 계산하여 출력한다.

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

1, 2, 3 ... 을 순서대로 계속 더해나갈 때,
그 합이 입력한 정수보다 작을 동안만 계속 더하는 프로그램을 작성해보자.
즉, 1부터 n까지 정수를 계속 더한다고 할 때,
어디까지 더해야 입력한 수보다 같거나 커지는지 알아보고자 하는 문제이다.
하지만, 이번에는 그 때의 합을 출력해야 한다.
예를 들어 57을 입력하면
1+2+3+...+8+9+10=55에 다시 11을 더해 66이 될 때,
그 값 66이 출력되어야 한다.

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

정수 n을 입력받아 1부터 시작해서 연속된 자연수를 더해가며 그 합이 n 이상이 될 때까지 반복한다.
for문 안에서 각 숫자를 s에 더하고 s가 n 이상이면 break로 종료한다. 마지막에 s의 값을 출력한다.

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

1부터 입력한 정수까지 1씩 증가시켜 출력하는 프로그램을 작성하되,
3의 배수인 경우는 출력하지 않도록 만들어보자.

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

정수 n을 입력받고, 1부터 n까지의 수 중에서 3의 배수를 제외한 수들을 출력한다.
for문에서 각 숫자가 3의 배수일 경우 continue 문을 사용하여 반복을 건너뛰고 나머지를 출력한다.

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

시작 값(a), 등차(d), 몇 번째인지를 나타내는 정수(n)가 입력될 때
n번째 수를 출력하는 프로그램을 만들어보자.
등차수열의 일반항 공식 a + (n - 1) * d

int main() {
    int a, d, n;
    scanf("%d %d %d", &a, &d, &n);
    int re = a + (n - 1) * d;
    printf("%d", re);
    return 0;
}

scanf로 a,b,c를 입력받고 등차수열 일반항 공식을 통해 printf문으로 출력한다

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

시작 값(a), 등비(r), 몇 번째인지를 나타내는 정수(n)가 입력될 때
n번째 수를 출력하는 프로그램을 만들어보자.
등비수열 공식: a * (ar (n - 1))

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

    long long result = a;
    for (int i = 1; i < n; i++) {
        result *= r;
    }

    printf("%lld", result);
    return 0;
}

그냥 int형으로 했더니 테스트케이스에 표현범위를 못담아서 오버플로우가 되서 long long 형으로 받았음.

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

시작 값(a), 곱할 값(m), 더할 값(d), 몇 번째인지를 나타내는 정수(n)가 입력될 때, n번째 수를 출력하는 프로그램을 만들어보자.

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

    long long int result = a;
    for (int i = 1; i < n; i++) {
        result = result * m + d;
    }

    printf("%lld", result);
    return 0;
}

앞 문제에서 d만 더해주면 됨

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

온라인 채점시스템에는 초등학생, 중고등학생, 대학생, 대학원생,
일반인, 군인, 프로그래머, 탑코더 등 아주 많은 사람들이 들어와 문제를 풀고 있는데,실시간 채점 정보는 메뉴의 채점기록(Judge Status)을 통해 살펴볼 수 있다.
자! 여기서...잠깐..
같은 날 동시에 가입한 3명의 사람들이 온라인 채점시스템에 들어와 문제를 푸는 날짜가 매우 규칙적이라고 할 때, 다시 모두 함께 문제를 풀게 되는 그날은 언제일까?
예를 들어 3명이 같은 날 가입/등업하고, 각각 3일마다, 7일마다, 9일마다
한 번씩 들어온다면, 처음 가입하고 63일 만에 다시 3명이 함께 문제를 풀게 된다.

int main(){
    int a ,b, c;
    scanf("%d %d %d",&a,&b,&c);
    int day=1;
    while(day%a!=0 || day%b!=0 || day%c!=0)
        day++;
    printf("%d", day);
}

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

출석 번호를 n번 무작위로 불렀을 때, 각 번호(1 ~ 23)가 불린 횟수를 각각 출력해보자.

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

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

출석 번호를 n번 무작위로 불렀을 때, 부른 번호를 거꾸로 출력해 보자.

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

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

출석 번호를 n번 무작위로 불렀을 때, 가장 빠른 번호를 출력해 보자.

#include <stdio.h>
int main() {
    int small;
    int n;
    int num[1000000]; 
    scanf("%d",&n);
    for (int i=0;i<n;i++) {
        scanf("%d",&num[i]);
    }
    small=num[0];
    for (int i = 0;i<n;i++) {
        if (small>num[i]) {
            small=num[i];
        }
    }
    printf("%d",small);
    return 0;
}

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

기숙사 생활을 하는 학교에서 어떤 금요일(전원 귀가일)에는 모두 집으로 귀가를 한다.
오랜만에 집에 간 영일이는 아버지와 함께 두던 매우 큰 오목에 대해서 생각해 보다가
"바둑판에 돌을 올린 것을 프로그래밍 할 수 있을까?"하고 생각하였다.
바둑판(19 * 19)에 n개의 흰 돌을 놓는다고 할 때,
n개의 흰 돌이 놓인 위치를 출력하는 프로그램을 작성해보자.

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

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

부모님을 기다리던 영일이는 검정/흰 색 바둑알을 바둑판에 꽉 채워 깔아 놓고 놀다가...
"십(+)자 뒤집기를 해볼까?"하고 생각했다.
바둑판(19 * 19)에 흰 돌(1) 또는 검정 돌(0)이 모두 꽉 채워져 놓여있을 때,
n개의 좌표를 입력받아 십(+)자 뒤집기한 결과를 출력하는 프로그램을 작성해보자.

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차원배열] 설탕과자 뽑기

부모님과 함께 유원지에 놀러간 영일이는
설탕과자(설탕을 녹여 물고기 등의 모양을 만든 것) 뽑기를 보게 되었다.
길이가 다른 몇 개의 막대를 바둑판과 같은 격자판에 놓는데,
막대에 있는 설탕과자 이름 아래에 있는 번호를 뽑으면 설탕과자를 가져가는 게임이었다.
(잉어, 붕어, 용 등 여러 가지가 적혀있다.)
격자판의 세로(h), 가로(w), 막대의 개수(n), 각 막대의 길이(l),
막대를 놓는 방향(d:가로는 0, 세로는 1)과
막대를 놓는 막대의 가장 왼쪽 또는 위쪽의 위치(x, y)가 주어질 때,
격자판을 채운 막대의 모양을 출력하는 프로그램을 만들어보자.

#include <stdio.h>
int main() {
    int h, w, n;
    int l, d, x, y;

    scanf("%d %d", &h, &w);

    int board[100][100] = {0};
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        scanf("%d %d %d %d", &l, &d, &x, &y);
        x--;
        y--;
        if (d==0) {
            for (int j = 0; j < l; j++) {
                board[x][y + j] = 1;
            }
        } 
        else {
            for (int j = 0; j < l; j++) {
                board[x + j][y] = 1;
            }
        }
    }

    for (int i = 0; i < h; i++) {
        for (int j = 0; j < w; j++) {
            printf("%d ", board[i][j]);
        }
        printf("\n");
    }
    return 0;
}

격자판의 세로(h), 가로(w)를 입력받고 0부터 시작한다. 막대의 방향이 가로이면 l만큼 y좌표를 1로 바꾼다. 막대 방향이 세로이면 l만큼 x좌표를 1로 바꾼다.for문을 통해 출력해준다

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

영일이는 생명과학에 관심이 생겨 왕개미를 연구하고 있었다.
왕개미를 유심히 살펴보던 중 특별히 성실해 보이는 개미가 있었는데,
그 개미는 개미굴에서 나와 먹이까지 가장 빠른 길로 이동하는 것이었다.
개미는 오른쪽으로 움직이다가 벽을 만나면 아래쪽으로 움직여 가장 빠른 길로 움직였다.
(오른쪽에 길이 나타나면 다시 오른쪽으로 움직인다.)
이에 호기심이 생긴 영일이는 그 개미를 미로 상자에 넣고 살펴보기 시작하였다.
미로 상자에 넣은 개미는 먹이를 찾았거나, 더 이상 움직일 수 없을 때까지
오른쪽 또는 아래쪽으로만 움직였다.
미로 상자의 구조가 0(갈 수 있는 곳), 1(벽 또는 장애물)로 주어지고,
먹이가 2로 주어질 때, 성실한 개미의 이동 경로를 예상해보자.
단, 맨 아래의 가장 오른쪽에 도착한 경우, 더 이상 움직일 수 없는 경우, 먹이를 찾은 경우에는
더이상 이동하지 않고 그 곳에 머무른다고 가정한다.
미로 상자의 테두리는 모두 벽으로 되어 있으며,
개미집은 반드시 (2, 2)에 존재하기 때문에 개미는 (2, 2)에서 출발한다.

int main() {
    int maze[10][10];
    int x = 1, y = 1;
    for (int i = 0; i < 10; i++) {
        for (int j = 0; j < 10; j++) {
            scanf("%d", &maze[i][j]);
        }
    }

    while (1) {
        // 먹이를 찾은 경우
        if (maze[x][y] == 2) {
            maze[x][y] = 9;
            break;
        }
        maze[x][y] = 9; //집 부터 이동

        // 오른쪽으로 이동
        if (y + 1 < 10 && maze[x][y + 1] != 1) {
            y++;
        }
        // 아래로 이동
        else if (x + 1 < 10 && maze[x + 1][y] != 1) {
            x++;
        }
        // 이동할 수 없으면 종료
        else {
            break;
        }
    }
    for (int i = 0; i < 10; i++) {
        for (int j =0; j<10; j++) {
            printf("%d ", maze[i][j]);
        }
        printf("\n");
    }
    return 0;
}

maze를 10 x10으로 배열의 크기를 선언해주고 for문을 통해 maze의 값을 하나하나 입력받는다.
while문을 통해 값이 2면 그 값을 9로 바꾸고 break문을 통해 빠져나간다. maze의 0,0번을 9로 설정해 집을 9로 설정한다.
만약에 maze 배열이 크기를 넘어가지 않고 , y의 값이 2가 아니면 오른쪽으로 이동한다. 아래로 이동하는 경우도 같다.
이동할 수 없으면 break문을 통해 빠져나간다 for문으로 c출력해준다



profile
huso

0개의 댓글