๐Ÿ‘ฉโ€๐Ÿ’ป BOJ_1913_๋‹ฌํŒฝ์ด

YOU KNOW I MEANยท2022๋…„ 2์›” 12์ผ
0
post-thumbnail

๐Ÿ’ฌ ์—ด๊ณผ ํ–‰์˜ ์ฆ๊ฐ€/๊ฐ์†Œ์— ๋”ฐ๋ฅธ 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 ์‚ฌ์šฉ๋ฒ•

  1. BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
  2. bw.write(์ถœ๋ ฅ ๋ฌธ์ž์—ด);
  • BufferedWriter ์˜ ๊ฒฝ์šฐ ๋ฐ˜๋“œ์‹œ flush() / close() ๋ฅผ ํ˜ธ์ถœํ•ด ์ฃผ์–ด ๋ฒ„ํผ๋ฅผ ์ •๋ฆฌํ•ด์•ผํ•œ๋‹ค.
  • System.out.println(); ๊ณผ ๊ฐ™์€ ๊ฐœํ–‰ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด bw.write("\n"); ์„ ์จ์ค€๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด