[C언어 코드업 문제풀이] CodeUp 1509 : 진격 후 결과

코드업 1509번 진격 후 결과 문제 풀이 해답입니다.

 

1. 문제 설명

 

10*10 크기의 보드판이 있다.

각 말들은 제일 아래쪽에서 위쪽 방향으로 진격한다.

장애물은 0이 아닌 숫자로 나타내며, 0보다 크면 블럭 장애물, 0보다 작으면 구덩이 장애물, 0이면 평지이다.

10*10 보드판의 정보가 입력되고, 각 세로줄 아래에 말이 있으면 1, 없으면 0이 입력될 때 각 말의 생존여부를 구하는 프로그램을 구현하시오.

 

2. 입력

 

10*10의 보드판의 정보가 입력된다.

11째줄에 각 말의 위치 여부가 입력된다.(1:있음, 0:없음)

 

3. 출력

 

블럭 장애물에 부딪혀서 실패시 "세로줄 번호 crash",

구덩이에 떨어져서 실패시 "세로줄 번호 fall",

무사히 통과하면 "세로줄 번호 safe"를 출력한다.

(단, 말이 없는 줄은 아무결과도 출력하지 않는다.)

 

4. 입력 예시

 

0 0 0 0 0 0 0 0 0 0

0 2 0 0 0 0 0 0 0 0

0 0 -1 0 0 0 0 0 2 0

0 0 0 0 0 0 0 6 0 0

0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 -4 2 0 0 0

0 0 2 0 0 0 0 0 0 0

0 0 0 0 3 0 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 1 0 0 1 1 0 1 0 1 

 

5. 출력 예시

 

1 safe

2 crash

5 crash

6 fall

8 crash

10 safe

 

6. 문제 풀이

 

1번 줄 말은 무사 통과

 

2번 줄 말은 2 크기의 장애물에서 부딪혀 실패.

 

5번 줄 말은 3 장애물에서 부딪혀 실패

 

6번 줄 말은 -4 장애물에서 빠져 실패

 

8번 줄 말은 6 장애물에서 부딪혀 실패

 

10번 줄 말은 무사 통과

 

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
#include "stdio.h"
 
 
int main(void)
{
    int Arr[12][11= {};
    
    for(int i = 1; i<=11; i++){
        for(int j = 1; j<=10; j++){
            scanf("%d",&Arr[i][j]);
        }
    }
    //0보다 크면 블럭, 0보다 작으면 구덩이
    //0 보다 크면 crash
    //0 보다 작으면 fall
    //0 이면 safe
    
    for(int j = 1; j<=10; j++){
        if(Arr[11][j] != 0){
            int result = 0;
            for(int i = 1; i<=10; i++){
                if(Arr[i][j] > 0 ){result = 1;}
                else if(Arr[i][j] < 0){result = 2;}
            }
            if(result == 1){printf("%d crash\n",j);}
            else if(result == 2){printf("%d fall\n",j);}
            else{printf("%d safe\n",j);}
        }
    }
 
    return 0;
}
 
 

 

댓글()