๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

[๋ฐฑ์ค€] 11586๋ฒˆ: ์ง€์˜ ๊ณต์ฃผ๋‹˜์˜ ๋งˆ๋ฒ• ๊ฑฐ์šธ(๋ฌธ์ž์—ด)

by ์ฃผ๋ฐœ2 2020. 2. 6.
๋ฐ˜์‘ํ˜•

https://www.acmicpc.net/problem/11586

 

11586๋ฒˆ: ์ง€์˜ ๊ณต์ฃผ๋‹˜์˜ ๋งˆ๋ฒ• ๊ฑฐ์šธ

์ฒœ๋‚˜๋ผ ๋ฏผํ˜ธ์„ฑ์˜ ์ง€์˜ ๊ณต์ฃผ๋‹˜์€ ๋งค์šฐ ์•„๋ฆ„๋‹ต๋‹ค. ๊ณต์ฃผ๋‹˜ ์ž์‹ ๋„ ์ด ์„ธ์ƒ ๊ทธ ๋ˆ„๊ตฌ๋ณด๋‹ค ์ž์‹ ์ด ์•„๋ฆ„๋‹ต๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๋‹ค. ๊ณต์ฃผ๋‹˜์€ ์ž์‹ ์˜ ์•„๋ฆ„๋‹ค์›€์ด ์„ธ์›”์˜ ์ €ํŽธ์œผ๋กœ ์‚ฌ๋ผ์ง€๋Š” ๊ฒƒ์„ ๋งค์šฐ ๋‘๋ ค์›Œํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ํ•˜๋ฃจ์—๋„ ์ˆ˜์‹ญ ์ˆ˜๋ฐฑ ๋ฒˆ์”ฉ ๊ฑฐ์šธ์„ ๋ณด๋ฉฐ ์ž์‹ ์˜ ๋ชจ์Šต์ด ์—ฌ์ „ํžˆ ์•„๋ฆ„๋‹ค์šด์ง€ ํ™•์ธ์„ ๊ฑฐ๋“ญํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋˜ ์–ด๋Š ๋‚ , ์„ธ์ƒ์˜ ๋‹ค์–‘ํ•œ ์žฅ๋ฉด๋“ค์„ ๋‹ด๊ณ  ์‹ถ์—ˆ๋˜ ๊ณต์ฃผ๋‹˜์˜ ๋งˆ๋ฒ•๊ฑฐ์šธ์€ ๋งค์ผ ๋˜‘๊ฐ™์€ ๋ชจ์Šต๋งŒ์„ ๋น„์ถ”๋Š” ์ž์‹ ์˜ ์šด๋ช…์— ์ขŒ์ ˆํ•˜๋ฉฐ ์•ž์œผ๋กœ์˜ ์šด๋ช…์„ ๊ฐœ์ฒ™ํ•˜๊ธฐ๋กœ ๊ฒฐ์‹ฌํ–ˆ๋‹ค. ๋งˆ๋ฒ•๊ฑฐ์šธ

www.acmicpc.net

์ฝ”๋“œ

import java.util.Scanner;

public class Main {
	static int N;
	static char cArr[][];

	// ํ˜„์žฌ ๋ชจ์Šต ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ
	public static void current() {
		for(int i=0; i<N; i++) {
			for(int j=0; j<N; j++) {
				System.out.print(cArr[i][j]);
			}
			System.out.println();
		}
	}

	// ์ƒ/ํ•˜ ๋ฐ˜์ „ ์ถœ๋ ฅ
	public static void reverseUpDown() {
		for(int i=0; i<N/2; i++) {
			for(int j=0; j<N; j++) {
				/*
				 * ์ƒ/ํ•˜ ๋ฐ˜์ „ ๊ทœ์น™(N=8 ์ด๋ผ๊ณ  ๊ฐ€์ •)
				 * i=0, j=0 --> (0,0) <-> (7,0) ๊ตํ™˜
				 * i=0, j=1 --> (0,1) <-> (7,1) ๊ตํ™˜
				 * i=0, j=2 --> (0,2) <-> (7,2) ๊ตํ™˜
				 * 
				 * i=1, j=0 --> (1,0) <-> (6,0) ๊ตํ™˜
				 * i=1, j=1 --> (1,1) <-> (6,1) ๊ตํ™˜
				 */
				char temp = cArr[i][j];
				cArr[i][j] = cArr[N-i-1][j];
				cArr[N-i-1][j] = temp;
			}
		}
		
		for(int i=0; i<N; i++) {
			for(int j=0; j<N; j++) {
				System.out.print(cArr[i][j]);
			}
			System.out.println();
		}
	}

	// ์ขŒ/์šฐ ๋ฐ˜์ „ ์ถœ๋ ฅ 
	public static void reverseLeftRight() {
		for(int i=0; i<N; i++) {
			for(int j=0; j<N/2; j++) {

				/*
				 * ์ขŒ/์šฐ ๋ฐ˜์ „ ๊ทœ์น™(N=8 ์ด๋ผ๊ณ  ๊ฐ€์ •)
				 * i=0, j=0 --> (0,0) <-> (0,7) ๊ตํ™˜
				 * i=0, j=1 --> (0,1) <-> (0,6) ๊ตํ™˜
				 * i=0, j=2 --> (0,2) <-> (0,5) ๊ตํ™˜
				 */
				char temp = cArr[i][j];
				cArr[i][j] = cArr[i][N-j-1];
				cArr[i][N-j-1] = temp;
			}
		}

		for(int i=0; i<N; i++) {
			for(int j=0; j<N; j++) {
				System.out.print(cArr[i][j]);
			}
			System.out.println();
		}
	}

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		N = scan.nextInt();
		cArr = new char[N][N];
		for(int i=0; i<N; i++) {
			String str = scan.next();
			for(int j=0; j<N; j++) {
				cArr[i][j] = str.charAt(j);
			}
		}
		int K = scan.nextInt();
		
		if(K == 1) 
			current();			// ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ
		else if(K == 2)
			reverseLeftRight();	// ์ขŒ์šฐ๋ฐ˜์ „ ์ถœ๋ ฅ
		else
			reverseUpDown();	// ์ƒํ•˜๋ฐ˜์ „ ์ถœ๋ ฅ

		scan.close();
	}

}

 

ํ’€์ด 

K=1 ์ผ๋•Œ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅํ•˜๋Š” ๋ฉ”์†Œ๋“œ current()

K=2 ์ผ๋•Œ ์ขŒ/์šฐ ๋ฐ˜์ „ํ•ด์„œ ์ถœ๋ ฅํ•˜๋Š” ๋ฉ”์†Œ๋“œ reverseLeftRight()

K=3 ์ผ๋•Œ ์ƒ/ํ•˜ ๋ฐ˜์ „ํ•ด์„œ ์ถœ๋ ฅํ•˜๋Š” ๋ฉ”์†Œ๋“œ reverseUpDown() 

์„ ์ž‘์„ฑํ–ˆ๋‹ค.

์ƒ/ํ•˜, ์ขŒ/์šฐ ๋ฐ˜์ „ํ•˜๋Š” ๊ทœ์น™์€ ์ฃผ์„์— ์ž‘์„ฑํ–ˆ๊ณ ,

์ฃผ์˜ํ• ์ ์€ ์ขŒ/์šฐ ๋ฐ˜์ „์˜ ๊ฒฝ์šฐ ์—ด์„ N/2๊นŒ์ง€๋งŒ ๋ฐ˜๋ณตํ•˜๊ณ ,

์ƒ/ํ•˜ ๋ฐ˜์ „์˜ ๊ฒฝ์šฐ ์—ด์„ N/2๊นŒ์ง€๋งŒ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€