※ 저의 풀이가 무조건적인 정답은 아닙니다.
다른 코드가 좀 더 효율적이고 좋을 수 있습니다.
다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.
문제 주소입니다.
https://codeup.kr/problem.php?id=1509
1. 문제
2. 문제 해석
3. 소스 코드
문제
10*10 크기의 보드판이 있다. 각 말들은 제일 아래쪽에서 위쪽 방향으로 진격한다. 장애물은 0이 아닌 숫자로 나타내며, 0보다 크면 블럭 장애물, 0보다 작으면 구덩이 장애물, 0이면 평지이다. 10*10 보드판의 정보가 입력되고, 각 세로줄 아래에 말이 있으면 1, 없으면 0이 입력될 때 각 말의 생존여부를 구하는 프로그램을 구현하시오. |
입력
10*10의 보드판의 정보가 입력된다. 11째줄에 각 말의 위치 여부가 입력된다.(1:있음, 0:없음) |
출력
블럭 장애물에 부딪혀서 실패시 "세로줄 번호 crash", 구덩이에 떨어져서 실패시 "세로줄 번호 fall", 무사히 통과하면 "세로줄 번호 safe"를 출력한다. (단, 말이 없는 줄은 아무결과도 출력하지 않는다.) |
입력 예시
|
출력 예시
1 safe 2 crash 5 crash 6 fall 8 crash 10 safe |
2. 문제풀이
코드에 주석있습니다. |
3. 소스코드
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
|
#include <iostream>
using namespace std;
int main() {
//11*10 배열
int arr[11][10]{ 0 };
//값 입력받기
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 10; j++) {
cin >> arr[i][j];
}
}
//진군하면서체크하기
for (int j = 0; j < 10; j++) {
for (int i = 9; i >= 0; i--) {
//값이 비어있다면 패스하기
if (!arr[10][j]) break;
//평지라면 진행, 마지막까지갔다면 safe출력
if (!arr[i][j]) {
if (!i) cout << j + 1 << " safe" << endl;
continue;
}
//장에물을 만났다면 crash출력하고 다음으로 넘어가기
else if (arr[i][j] > 0) {
cout << j + 1 << " crash" << endl;
break;
}
//구덩이를 만났다면 fall을 출력하고 다음으로 넘어가기
else if (arr[i][j] < 0) {
cout << j + 1 << " fall" << endl;
break;
}
}
}
return 0;
}
|
'코딩테스트 > 코드업' 카테고리의 다른 글
홀수 마방진 C++(1510)[코드업,code up] (0) | 2020.01.08 |
---|---|
나도 IQ 150 C++(1508)[코드업, code up] (0) | 2020.01.06 |
여러 개씩 묶어 작은 값 골라 배열 만들기 5-7 C++(1498)[코드업, code up] (0) | 2019.12.27 |
2차원 차이 배열 만들기 5-4 C++(1495)[코드업, Code up] (0) | 2019.12.26 |
1차원 차이 배열 만들기 5-3 C++(1494)[코드업, codeup] (0) | 2019.12.25 |
댓글