[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;
}
|
'ET의 공부 > C언어 연습문제[ 코드업 ]' 카테고리의 다른 글
[C언어 코드업 문제풀이] CodeUp 1511 : 테두리의 합 (0) | 2020.05.10 |
---|---|
[C언어 코드업 문제풀이] CodeUp 1510 : 홀수 마방진 (0) | 2020.05.10 |
[C언어 코드업 문제풀이] CodeUp 1508 : 나도 IQ 150 (0) | 2020.05.10 |
[C언어 코드업 문제풀이] CodeUp 1507 : 4개의 직사각형 넓이 (0) | 2020.05.05 |
[C언어 코드업 문제풀이] CodeUp 1506 : 2차원 배열 채우기 4(역달팽이 배열) (0) | 2020.05.05 |