๐ฌ ์ด๊ณผ ํ์ ์ฆ๊ฐ/๊ฐ์์ ๋ฐ๋ฅธ 4๊ฐ์ง ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด ๋ฌธ์ ๋ฅผ ํ์์ต๋๋ค. ์๊ฐ์ด๊ณผ์ ๋ฌธ์ ๋
Scanner -> BuffererdReader/Writer
๋ก ๋ณ๊ฒฝํ์ฌ ํด๊ฒฐํ์์ต๋๋ค.
ํ์์ธ ์์ฐ์ N์ ๋ํด 1๋ถํฐ N*N๊น์ง์ ์์ฐ์๋ฅผ ๋ฌํฝ์ด ๋ชจ์์ผ๋ก NรN์ ํํํ๊ณ , K์ ๊ฐ์ด ์กด์ฌํ๋ ์์น๋ฅผ ์ถ๋ ฅํ์์ค.
๋ฌํฝ์ด ํ๋ ฌ์ ์ฑ์ธ ์ ์๋ 4๊ฐ์ง ๊ฒฝ์ฐ๋ฅผ ๊ตฌํํ์์ต๋๋ค.
1) ํ ์ฆ๊ฐ, ์ด ์ ์ง : i++ / j
2) ํ ์ ์ง, ์ด ์ฆ๊ฐ : i / j++
3) ํ ๊ฐ์, ์ด ์ ์ง : i-- / j
4) ํ ์ ์ง, ์ด ๊ฐ์ : i / j--
์ฑ์ด ํ๋ ฌ์ ์ถ๋ ฅํฉ๋๋ค.
์ด ๋,
System.out.print();
๋ฅผ ์ฌ์ฉํ๋ ์๊ฐ ์ด๊ณผ๊ฐ ๋์์ต๋๋ค. ๊ทธ๋์ ์ถ๋ ฅ ๋ฐฉ๋ฒ์ ๋ณ๊ฒฝํ์์ต๋๋ค.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
//import java.util.Scanner;
public class ๋ฌํฝ์ด {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//Scanner sc = new Scanner(System.in);
//int N = sc.nextInt(); // ๋ฌํฝ์ด ์ฌ์ด์ฆ
//int search = sc.nextInt(); // ์ฐพ์ ๊ฐ
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine()); // ๋ฌํฝ์ด ์ฌ์ด์ฆ
int search = Integer.parseInt(br.readLine()); // ์ฐพ์ ๊ฐ
int start = N*N; // ์ต์ด ๊ฐ
int snail[][] = new int[N+1][N+1];
int visit[][] = new int[N+1][N+1];
int loc_i = 1;
int tmp_i = 1;
int loc_j = 1;
int tmp_j = 1;
while(true) {
// ํ ์ฆ๊ฐ, ์ด ์ ์ง : i++, j
for(int i = loc_i; i < N+1; i++) {
if(visit[i][loc_j] == 0) {
snail[i][loc_j] = start;
start--;
visit[i][loc_j] = 1;
tmp_i = i;
}
}
loc_i = tmp_i;
// ํ ์ ์ง, ์ด ์ฆ๊ฐ : i, j++
for(int j = loc_j; j < N+1; j++) {
if(visit[loc_i][j] == 0) {
snail[loc_i][j] = start;
start--;
visit[loc_i][j] = 1;
tmp_j = j;
}
}
loc_j = tmp_j;
// ํ ๊ฐ์, ์ด ์ ์ง : i--, j
for(int i = loc_i; i >= 1; i--) {
if(visit[i][loc_j] == 0) {
snail[i][loc_j] = start;
start--;
visit[i][loc_j] = 1;
tmp_i = i;
}
}
loc_i = tmp_i;
// ํ ์ ์ง, ์ด ๊ฐ์ : i, j--
for(int j = loc_j; j >= 1; j--) {
if(visit[loc_i][j] == 0) {
snail[loc_i][j] = start;
start--;
visit[loc_i][j] = 1;
tmp_j = j;
}
}
loc_j = tmp_j;
if(start == 0) {
break;
}
}
// ์ ๋ต ์ถ์ถ
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); //ํ ๋น๋ ๋ฒํผ์ ๊ฐ ๋ฃ์ด์ฃผ๊ธฐ
for(int i = 1; i < N+1; i++) {
for(int j = 1; j < N+1; j++) {
bw.write(snail[i][j] + " ");
//System.out.print(snail[i][j]+" ");
if(snail[i][j] == search) {
loc_i = i;
loc_j = j;
}
}
bw.write("\n");
//System.out.println();
}
bw.write(loc_i + " " + loc_j);
//System.out.print(loc_i + " " + loc_j);
bw.flush(); // ๋จ์์๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์ถ๋ ฅ์ํด
bw.close(); // ์คํธ๋ฆผ์ ๋ซ์
}
}
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write(์ถ๋ ฅ ๋ฌธ์์ด);
flush()
/ close()
๋ฅผ ํธ์ถํด ์ฃผ์ด ๋ฒํผ๋ฅผ ์ ๋ฆฌํด์ผํ๋ค.System.out.println();
๊ณผ ๊ฐ์ ๊ฐํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ฉด bw.write("\n");
์ ์จ์ค๋ค.