ex1) 무식하게 풀기
import java.util.Scanner;
class Main{
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int [] dx = { 0, 1 };
int [] dy = { 1, 0 };
boolean flag = false;
boolean isBlocked = false;
int [][]arr = new int[11][11];
for ( int i = 1 ; i <= 10; ++i)
for ( int j = 1 ; j <= 10; ++j)
arr[i][j]=sc.nextInt();
int x=2;
int y=2;
if (arr[2][2] == 2)
flag = true;
arr[2][2]=9;
while (!flag && !isBlocked) {
for ( int i = 0 ; i < 2 ; ++i) {
int nx = x + dx[i];
int ny = y + dy[i];
if( arr[nx][ny] != 1) {
if (arr[nx][ny] == 2 ) flag=true;
arr[nx][ny] = 9;
x=nx;
y=ny;
break;
}
if ( i==1 && arr[nx][ny] == 1 )
isBlocked=true;
}
}
for (int i = 1 ; i <= 10; ++i) {
for ( int j = 1; j <= 10; ++j)
System.out.print(arr[i][j] + " ");
System.out.println();
}
}
}
ex2) dfs 길찾기
import java.util.Scanner;
class Main{
static int [] dx = { 0, 1 };
static int [] dy = { 1, 0 };
static int [][]arr = new int[11][11];
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
Main M = new Main();
for ( int i = 1 ; i <= 10; ++i)
for ( int j = 1 ; j <= 10; ++j)
arr[i][j]=sc.nextInt();
int x=2;
int y=2;
M.dfs(2, 2);
for (int i = 1 ; i <= 10; ++i) {
for ( int j = 1; j <= 10; ++j)
System.out.print(arr[i][j] + " ");
System.out.println();
}
}
private void dfs(int x, int y) {
if( arr[x][y] == 2 ) {
arr[x][y]=9;
return;
}
if ( arr[x][y] == 1) {
return;
} else {
arr[x][y] = 9;
if ( arr[x][y+1] != 1 )
dfs(x, y+1);
else
dfs(x+1, y);
}
}
}
출처 : https://codeup.kr/problem.php?id=1099&rid=0
'PS > code-up' 카테고리의 다른 글
설탕과자뽑기(반복문 인덱스 계산) (0) | 2022.04.22 |
---|---|
함께 문제 푸는 날 (0) | 2022.04.22 |
수열 3 (0) | 2022.04.22 |
그림파일 용량 계산 (0) | 2022.04.22 |
audio 파일 용량 계산 (0) | 2022.04.22 |