## 1099
기초 5-3 2차원 배열
성실한 개미
- 10*10의 판이 있음. 상하좌우는 모두 벽.
- 벽은 1, 길은 0, 먹이는 2. 개미가 걸어가는 길은 9로 체크.
- 개미는 (2,2)에서 출발
- 무조건 오른쪽으로, 오른쪽이 벽이면 아래로, 오른쪽과 아래가 벽이거나, 먹이를 찾으면 멈춤.
- 멈출 때 까지 개미가 간 길을 9로 체크된 10*10으로 다시 출력.
import java.util.Scanner;
public class CodeUp1099 {
public static void main(String[] args) {
// 10*10 입력
Scanner sc = new Scanner(System.in);
byte[][] map = new byte[10][10];
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
map[i][j] = sc.nextByte();
}
}
// 개미 출발위치
int antI = 1;
int antJ = 1;
boolean flag = true;
// 출발
while (flag) {
if (map[antI][antJ]==2)
flag = false;
map[antI][antJ] = 9;
if (map[antI + 1][antJ] == 1 && map[antI][antJ+1] == 1) {
flag = false;
} else if (map[antI][antJ + 1] == 1) {
antI++;
} else {
antJ++;
}
}
// 출력.
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
System.out.print(map[i][j]);
if (j != 9)
System.out.print(" ");
}
System.out.println();
}
}
}
- 2차원 배열 문제 중 이게 성공률이 가장 낮길래 해봤다.
- flag 를 선언하고 flag = false로 끝내는 거 대신에 그냥 break;를 쓰는게 더 깔끔했으려나
- 출력 부분에서... 예시를 보면, 한 줄을 출력할 때 원소와 원소 사이에 공백을 두던데, 그냥 printf("%d "); 이런식으로 하면 마지막 원소 뒤에도 공백이 출력돼서 안될까 싶어서 그냥 굳이 if로 마지막 전까지만 공백을 줬는데... 저거 말고 더 깔끔한 방법이 있는지 궁금하다.
'PS - CodeUp' 카테고리의 다른 글
1096, 1097, 1098 - 바둑판에 흰 돌 놓기, 바둑알 십자 뒤집기, 설탕과자 뽑기 (0) | 2022.01.20 |
---|---|
1093, 1094, 1095 - 이상한 출석 번호 부르기 1, 2, 3 (0) | 2022.01.20 |
1441, 1442, 1443 - 버블 정렬, 선택 정렬, 삽입 정렬 (0) | 2022.01.20 |
1416 - 2진수 변환, 1524 - 지뢰찾기1 (0) | 2022.01.18 |
1166 1172 1257 1259 1271 1274 1278 1353 1354 1355 1380 (제어문, 반복문) (0) | 2022.01.18 |