Notice
Recent Posts
Recent Comments
Link
뮁이의 개발새발
[JAVA] 백준 10157 자리배정 본문
내가 별로 좋아하지 않는 회오리 모양의 배열 칸채우기 ,,, 더군다나 이번에는 x,y방향도 반대고, (보통은 행열인데 야는 열행으로 찾으라함..) 배열 인덱스도 맨밑왼쪽부터 1,1 이렇게 시작하는 바람에 조금 헷갈렸다 ..... 그래도 이런유형 여러번 풀어보니까 처음보단 할만한듯..ㅠ
이런식으로 한줄 채울때마다 한칸씩 덜가서 채운다고 생각하면 됨 ㅎㅎ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class bj10157 {
static int cnt = 1;
static int[][] map;
static int R, C;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(in.readLine());
C = Integer.parseInt(st.nextToken());
R = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(in.readLine());
map = new int[R][C];
int row = R;
int col = C;
int start = 0;
while (true) {
if (row <= 0 || col <= 0) {
break;
}
numbering(row, col, start);
row = row - 1;
col = col - 1;
start++;
}
int[] answer = find(K);
if (answer == null) {
System.out.println(0);
} else {
System.out.println((answer[1] + 1) + " " + (answer[0] + 1));
}
}
static void numbering(int row, int col, int start) {
for (int i = start; i < row - 1; i++) {
if (map[i][start] != 0)
break;
map[i][start] = cnt;
cnt++;
}
for (int i = start; i < col - 1; i++) {
if (map[row - 1][i] != 0)
break;
map[row - 1][i] = cnt;
cnt++;
}
for (int i = row - 1; i > start; i--) {
if (map[i][col - 1] != 0)
break;
map[i][col - 1] = cnt;
cnt++;
}
for (int i = col - 1; i > start; i--) {
if (map[start][i] != 0)
break;
map[start][i] = cnt;
cnt++;
}
}
static int[] find(int n) {
for (int i = 0; i < R; i++) {
for (int j = 0; j < C; j++) {
if (map[i][j] == n) {
return new int[] { i, j };
}
}
}
return null;
}
}
'Algorithm' 카테고리의 다른 글
[JAVA] 백준 2635 수 이어가기 (0) | 2021.08.28 |
---|---|
[JAVA] 백준 2669 직사각형 네개의 합집합의 면적 구하기 (0) | 2021.08.28 |
[JAVA] 백준 2491 수열 (0) | 2021.08.27 |
[JAVA] 백준 2563 색종이 (0) | 2021.08.27 |
[JAVA] 백준 10026 적록색약 (DFS) (0) | 2021.08.27 |
Comments