문제:
https://www.acmicpc.net/problem/1491
1491번: 나선
세준이는 밑면이 N×M크기인 궁전에 산다. 세준이는 자신을 남에게 보이는 것을 싫어해서 사람들이 궁전에 자신을 보러 올 때, 되도록 많이 걷게 만들고 싶어한다. 세준이의 보안 담당 은진이는
www.acmicpc.net
코드:
import java.util.*;
public class Main {
public static int n;
public static int m;
public static int x = 0;
public static int y = 0;
public static int [] dx = new int[]{0,-1,0,1};
public static int [] dy = new int[]{1,0,-1,0};
public static boolean inRange(int x, int y) {
return (0 <= x && x < m) && (0 <= y && y < n);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
x = m-1;
y = 0;
int [][] arr = new int[m][n];
int dirNum = 0;
arr[m-1][0] = 1;
for(int i=2;i<=n*m;i++) {
int nx = x+dx[dirNum];
int ny = y+dy[dirNum];
if(!inRange(nx,ny) || arr[nx][ny] != 0) {
dirNum = (dirNum+1)%4;
}
x= x+dx[dirNum];
y= y+dy[dirNum];
arr[x][y] = i;
}
for(int i=0;i<m;i++) {
for(int j=0;j<n;j++) {
if(arr[i][j] == n*m) {
System.out.println(j+" "+(m-1-i));
}
}
}
}
}
'Java > 백준' 카테고리의 다른 글
[Java][2446] 별 찍기 - 9 (0) | 2022.07.20 |
---|---|
[2445] 별 찍기-8 (0) | 2022.07.20 |
[1059] 좋은 구간 (1) | 2022.07.15 |
[1526] 금민수 (실패) (1) | 2022.07.12 |
[2033] 반올림 (1) | 2022.07.10 |