티스토리 뷰

728x90

현 포스팅에서 설명하는 모든 문제는 codeup.kr 사이트에 있는 문제입니다. 여기 있는 문제 말고도 다양한 문제들이 준비되어 있으니 흥미 있으시다면 도전해보세요!

<codeup사이트란?> :알고리즘 관련 다양한 문제들을 풀면서 실력을 높일 수 있는 유용한 문제풀이 사이트

접속은 여기를 클릭해주세요. <codeup.kr>

「1164번 문제」

문제 핵심: 터널의 높이가 차례대로 3개 주어진다. (정수)

170보다 같거나 작으면 "CRASH"를 출력, 그 보다 크면 "PASS"를 출력하시오.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
 
int main(){
    int a,b,c,d,e,f;                        //정수형 변수 선언
 
    scanf("%d %d %d"&a, &b, &c);          //정수 3개를 입력받아 각각a,b,c에 저장
    
    if(a <= 170){                           //a의 값이 170이하이면 
        printf("CRASH");                    //CRASH를 출력
    }else if(b <= 170){                     //a가 170보다 크고,b의 값이 170이면
        printf("CRASH");                    //CRASH를 출력
    }else if(c <= 170){                     //a가 170보다 크고,b의 값이 170보다 크고, c의 값이 170이하라면
        printf("CRASH");                    //CRASH를 출력
    }else printf("PASS");                   //위의 모든 조건이 성립하지 않으면 PASS를 출력
    
}
cs

「1165번 문제」

문제 핵심: 현재 경기시간과 우리팀의 득점이 입력으로 주어진다.(정수)    경기가 끝났을때 우리팀의 득점을 출력한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
 
int main(){
    int a,b,c,d,e,f;                    //정수형 변수를 선언
    int i = 0;                          //정수인 변수i를 0으로 초기화
    int sum = 0;                        //정수인 변수sum을 0으로 초기화
 
    scanf("%d %d"&sum, &b);           //정수 2개를 입력받아 각각 sum,b에 저장
    do{
        i = i + 1
        sum = sum + 5;
    }while(sum < 90);                   //sum이 90보다 작으면 i를 1씩 더하고 sum은 5씩 더함
    printf("%d" ,b + i );               //b + i 계산 값을 
}
 
cs

「1166번 문제」

문제 핵심: 해(year)가 입력된다. 윤년이면 "yes"를 출력, 윤년이 아니면 "no"를 출력하시오.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
int main(){
    int sum;                                 //정수형 변수를 선언
 
    scanf("%d"&sum);                       //정수 1개를 입력받아 sum에 저장
    
    if(sum % 4 == 0){                        //sum을 4로 나눈 나머지가 0이고(sum이 4의배수)
        if(sum % 400 == 0){                  //sum을 400으로 나눈 나머지가 0 이면(sum이 400의배수)
            printf("yes");                   //yes를 출력
        }else if(!(sum % 100 == 0)){         //sum이 4의 배수이면서 100의 배수가 아니면
            printf("yes");                   //yes를 출력
        }else printf("no");                  //sum이 400의 배수가 아니면 no를 출력
 
    }else printf("no");                      //sum이 4의 배수가 아니면 no를 1번 출력(단,첫 if문의 sum % 4 == 0이 성립되지 않기 때문에
                                             // 이 경우 바로 윗줄의 no는 출력되지 않는다.) - 총 no는 1번 출력됨
}
cs

「1167번 문제」

문제 핵심: 세 개의 정수가 공백으로 구분되어 입력된다.    세 개의 정수 중 두번째로 작은 숫자를 출력한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <stdio.h>
int main(){
    int a,b,c;                           //정수형 변수 선언
    int count = 0;                       //최솟값인지 2번째 최솟값일지를 구분해주는 변수
    scanf("%d %d %d",&a,&b,&c);          //정수 3개를 입력받아 각각 a,b,c에 저장
     
                                         //a,b,c중 같은 값이 없거나, 같은 값이 있어도 결과에 영향을 주지 않을 때 ##########################   - 1번 조건문
    if(a < b && a < c){                  //a가 b,c보다 작을때
        if(b < c)printf("%d",b);         //b가 c보다 작으면 b를 출력
        else printf("%d",c);             //b가 c보다 크면 c를 출력  (b != c)
        count++;                         //count값에 1을 더함       
    }
    
    if(b < a && b < c){                  //b가 a,c보다 작을때
        if(a < c)printf("%d",a);         //a가 c보다 작으면 a를 출력
        else printf("%d",c);             //a가 c보다 크면 c를 출력  (a != c)
        count++;                         //count값에 1을 더함
    }
    
    if(c < b && c < a){                  //c가 b,a보다 작을때
        if(b < a)printf("%d",b);         //b가 a보다 작으면 b를 출력
        else printf("%d",a);             //b가 a보다 크면 a를 출력   (a != b)
        count++;                         //count값에 1을 더함
    }
    
                                        //a,b,c중 두개 이상의 값이 같고, 그 값이 결과에 영향을 줄 때 ##################################### - 2번 조건문
    if(a == b && c == a && b == c)printf("%d",a);         //a와 b와 c가 같으면 a를 출력(이때 출력할 a는 a,b,c중 아무거나여도 상관 없음)
    
    else if(a == b && a != c){                            //a,b,c가 모두 같지 않은 상태에서 a와 b의 값만 같을때
        if(count == 0){                                   //count가 0이라면(위의 1번 조건문에서 해당되는 것이 없다면)
        if(a < c)printf("%d",a);                          //a가 c보다 작으면 a를 출력
        else printf("%d",c);                              //a가 c보다 크면 c를 출력
    }
    }
    else if(a == c && a != b){                            //a,b,c가 모두 같지 않은 상태에서 a와 c의 값만 같을때
        if(count == 0){                                   //count가 0이라면(위의 1번 조건문에서 해당되는 것이 없다면)
        if(a < b)printf("%d",a);                          //a가 b보다 작다면 a를 출력
        else printf("%d", b);                             //a가 b보다 크다면 b를 출력
    }                                            
    }
    else if(b == c && b != a){                            //a,b,c가 모두 같지 않은 상태에서 a와 c의 값만 같을때                                                  
        if(count == 0){                                   //count가 0이라면(위의 1번 조건문에서 해당되는 것이 없다면)
        if(b < a)printf("%d",b);                          //b가 a보다 작다면 b를 출력
        else printf("%d",a);                              //b가 a보다 크다면 a를 출력
    }
    }
}
 
cs

※위 코드는 효율적이지 않습니다.

"미만(<)"이 아닌"이하 (<=)"를 사용하면 더욱 간단히 풀 수 있는 문제이니 이 코드를 참고해 직접 효율적으로 바꿔 보시는 건 어떤가요?


「1168번 문제」

문제 핵심: 생년월일(6자리)과 성별정보(1자리)가 공백으로 분리되어 정수로 주어진다.  2012년도에 현재 나이를 출력하시오.

1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
int main(){
    int a,b,c,d,e,f,num                          //정수형 변수 선언
    
    scanf("%d %d"&a, &num);                    //정수2개를 입력받아 각각a,num에 저장
    if(num == 1 || num == 2){                    //num이 1이거나 2이면
        printf("%d"13 + 100 - (a/10000));      //13+100에서 a/10000을 뺀 값을 출력
    }else printf("%d"13 - a/10000);            //num이 1,2가 아니면 13에서 a/10000을 뺀 값을 출력
}
cs

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함