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

์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€

[๋ฐฑ์ค€ ์Šคํ„ฐ๋”” 2์ฃผ์ฐจ] 12100 2048 (Easy) ๊ณจ๋“œ2 - ์ž๋ฐ”(Java) / DFS / ์‹œ๋ฎฌ๋ ˆ์ด์…˜

๐Ÿ“‘ ๋ฌธ์ œ

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

 

12100๋ฒˆ: 2048 (Easy)

์ฒซ์งธ ์ค„์— ๋ณด๋“œ์˜ ํฌ๊ธฐ N (1 ≤ N ≤ 20)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ๊ฒŒ์ž„ํŒ์˜ ์ดˆ๊ธฐ ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. 0์€ ๋นˆ ์นธ์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์ด์™ธ์˜ ๊ฐ’์€ ๋ชจ๋‘ ๋ธ”๋ก์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋ธ”๋ก์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๋Š” 2

www.acmicpc.net

๋”๋ณด๊ธฐ

๋ฌธ์ œ

2048 ๊ฒŒ์ž„์€ 4×4 ํฌ๊ธฐ์˜ ๋ณด๋“œ์—์„œ ํ˜ผ์ž ์ฆ๊ธฐ๋Š” ์žฌ๋ฏธ์žˆ๋Š” ๊ฒŒ์ž„์ด๋‹ค. ์ด ๋งํฌ๋ฅผ ๋ˆ„๋ฅด๋ฉด ๊ฒŒ์ž„์„ ํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ด ๊ฒŒ์ž„์—์„œ ํ•œ ๋ฒˆ์˜ ์ด๋™์€ ๋ณด๋“œ ์œ„์— ์žˆ๋Š” ์ „์ฒด ๋ธ”๋ก์„ ์ƒํ•˜์ขŒ์šฐ ๋„ค ๋ฐฉํ–ฅ ์ค‘ ํ•˜๋‚˜๋กœ ์ด๋™์‹œํ‚ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋•Œ, ๊ฐ™์€ ๊ฐ’์„ ๊ฐ–๋Š” ๋‘ ๋ธ”๋ก์ด ์ถฉ๋Œํ•˜๋ฉด ๋‘ ๋ธ”๋ก์€ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์ง€๊ฒŒ ๋œ๋‹ค. ํ•œ ๋ฒˆ์˜ ์ด๋™์—์„œ ์ด๋ฏธ ํ•ฉ์ณ์ง„ ๋ธ”๋ก์€ ๋˜ ๋‹ค๋ฅธ ๋ธ”๋ก๊ณผ ๋‹ค์‹œ ํ•ฉ์ณ์งˆ ์ˆ˜ ์—†๋‹ค. (์‹ค์ œ ๊ฒŒ์ž„์—์„œ๋Š” ์ด๋™์„ ํ•œ ๋ฒˆ ํ•  ๋•Œ๋งˆ๋‹ค ๋ธ”๋ก์ด ์ถ”๊ฐ€๋˜์ง€๋งŒ, ์ด ๋ฌธ์ œ์—์„œ ๋ธ”๋ก์ด ์ถ”๊ฐ€๋˜๋Š” ๊ฒฝ์šฐ๋Š” ์—†๋‹ค)

<๊ทธ๋ฆผ 1>์˜ ๊ฒฝ์šฐ์—์„œ ์œ„๋กœ ๋ธ”๋ก์„ ์ด๋™์‹œํ‚ค๋ฉด <๊ทธ๋ฆผ 2>์˜ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ, ์™ผ์ชฝ์œผ๋กœ ๋ธ”๋ก์„ ์ด๋™์‹œํ‚ค๋ฉด <๊ทธ๋ฆผ 3>์˜ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

<๊ทธ๋ฆผ 4>์˜ ์ƒํƒœ์—์„œ ๋ธ”๋ก์„ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚ค๋ฉด <๊ทธ๋ฆผ 5>๊ฐ€ ๋˜๊ณ , ์—ฌ๊ธฐ์„œ ๋‹ค์‹œ ์œ„๋กœ ๋ธ”๋ก์„ ์ด๋™์‹œํ‚ค๋ฉด <๊ทธ๋ฆผ 6>์ด ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ธ”๋ก์„ ์ด๋™์‹œ์ผœ <๊ทธ๋ฆผ 7>์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

<๊ทธ๋ฆผ 8>์˜ ์ƒํƒœ์—์„œ ์™ผ์ชฝ์œผ๋กœ ๋ธ”๋ก์„ ์˜ฎ๊ธฐ๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? 2๊ฐ€ ์ถฉ๋Œํ•˜๊ธฐ ๋•Œ๋ฌธ์—, 4๋กœ ํ•ฉ์ณ์ง€๊ฒŒ ๋˜๊ณ  <๊ทธ๋ฆผ 9>์˜ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค. 

์ดํ•˜์ƒ๋žต ...

์ด ๋ฌธ์ œ์—์„œ ๋‹ค๋ฃจ๋Š” 2048 ๊ฒŒ์ž„์€ ๋ณด๋“œ์˜ ํฌ๊ธฐ๊ฐ€ N×N ์ด๋‹ค. ๋ณด๋“œ์˜ ํฌ๊ธฐ์™€ ๋ณด๋“œํŒ์˜ ๋ธ”๋ก ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ตœ๋Œ€ 5๋ฒˆ ์ด๋™ํ•ด์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ๋ธ”๋ก์˜ ๊ฐ’์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋ณด๋“œ์˜ ํฌ๊ธฐ N (1 ≤ N ≤ 20)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ๊ฒŒ์ž„ํŒ์˜ ์ดˆ๊ธฐ ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. 0์€ ๋นˆ ์นธ์„ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์ด์™ธ์˜ ๊ฐ’์€ ๋ชจ๋‘ ๋ธ”๋ก์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋ธ”๋ก์— ์“ฐ์—ฌ ์žˆ๋Š” ์ˆ˜๋Š” 2๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 1024๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ 2์˜ ์ œ๊ณฑ๊ผด์ด๋‹ค. ๋ธ”๋ก์€ ์ ์–ด๋„ ํ•˜๋‚˜ ์ฃผ์–ด์ง„๋‹ค.

 

์ถœ๋ ฅ

์ตœ๋Œ€ 5๋ฒˆ ์ด๋™์‹œ์ผœ์„œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ๋ธ”๋ก์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

 

 

 

 

 

 

โœ’๏ธ ํ’€์ด

 ํฐ ๊ทธ๋ฆผ์„ ๊ทธ๋ ค๋ณด์ž๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

โ—ป๏ธ ์ด๋™ํšŸ์ˆ˜๋ฅผ ๊นŠ์ด๋กœ ํ•˜์—ฌ, ๊ฐ ๋‹จ๊ณ„๋งˆ๋‹ค (์œ„/์•„๋ž˜/์ขŒ/์šฐ)๋ฅผ ํƒํ•˜๋Š” DFS ํƒ์ƒ‰์„ ํ•œ๋‹ค.

โ—ป๏ธ ํƒํ•œ ๋ฐฉํ–ฅ๋Œ€๋กœ ๋ธ”๋ก๋“ค์„ ์˜ฎ๊ฒจ์ค€ ๋‹ค์Œ, ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ„๋‹ค.

โ—ป๏ธ 5๋‹จ๊ณ„๊นŒ์ง€ ์™”์œผ๋ฉด, ๋งŒ๋“ค์–ด์ง„ 2048 ๋ธ”๋ก ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋ฅผ ์ฐพ์•„ ๊ฒฐ๊ณผ๊ฐ’์„ ์—…๋ฐ์ดํŠธ ํ•ด์ค€๋‹ค. 

โ—ป๏ธ ๋ชจ๋“  DFS ํƒ์ƒ‰์ด ๋๋‚˜๊ณ  ๊ฒฐ๊ณผ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

๐Ÿ’ก ์ด ์‚ฌ์ด์—์„œ ์ค‘์š”ํ•˜๊ฒŒ ์ฒดํฌํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์€ ์ด๋ ‡๋‹ค.

โœ”๏ธ DFS ํƒ์ƒ‰์‹œ ๊นŠ์ด K์—์„œ ํŠน์ • ๋ฐฉํ–ฅ์œผ๋กœ ๋ธ”๋ก์„ ์ด๋™์‹œํ‚จ ํ›„ ๊นŠ์ด K+1๋กœ ๋„˜์–ด๊ฐ”๋‹ค๋ฉด, ๋‹ค์‹œ K๋‹จ๊ณ„์—์„œ ๋‹ค๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™์‹œํ‚ฌ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•˜์—ฌ ๋ฐฐ์—ด์„ ์›๋ž˜๋Œ€๋กœ ๋Œ๋ ค์ค˜์•ผ ํ•œ๋‹ค.

 

โœ”๏ธ ๋ธ”๋ก์„ ์ด๋™์‹œํ‚ฌ ๋•Œ ๋ฐœ๊ฒฌํ•œ ๋ธ”๋ก์„ ์˜ฎ๊ธธ ์œ„์น˜(์ด์ „ ์นธ)์— ๋”ฐ๋ผ ์„ธ ๊ฐ€์ง€์˜ ์ผ€์ด์Šค๊ฐ€ ์กด์žฌํ•œ๋‹ค.

โ—ป๏ธ ์ด์ „ ์นธ์ด ๋นˆ ๊ณณ์ด๋ฉด

 ๊ทธ ์œ„์น˜๋กœ ๋ธ”๋ก์„ ์˜ฎ๊ฒจ์ค€๋‹ค. ๋‹จ, ๊ทธ ๋‹ค์Œ ๋ธ”๋ก์ด ์ง€๊ธˆ ๋ธ”๋ก๊ณผ ๊ฐ™์€ ์ˆซ์ž์ผ ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ ์ด์ „ ์นธ์˜ ์ธ๋ฑ์Šค๋Š” ๊ทธ๋Œ€๋กœ ๋‘”๋‹ค. ์ฆ‰, ๋‹ค์Œ ๋ฃจํ”„์—์„œ ์ด์ „ ์นธ์ด ๊ฐ€๋ฅดํ‚ค๋Š” ๊ฒƒ์€ ๋ฐฉ๊ธˆ ์˜ฎ๊ธด ๋ธ”๋ก์ด ๋œ๋‹ค.

 

โ—ป๏ธ ์ด์ „ ์นธ์— ์ง€๊ธˆ ๋ธ”๋ก๊ณผ ๊ฐ™์€ ๋ธ”๋ก์ด ์žˆ์œผ๋ฉด

 ์ˆซ์ž๋ฅผ ํ•ฉ์ณ์•ผ ํ•˜๋Š” ์ผ€์ด์Šค์ด๋‹ค. ๋‘ ๋ธ”๋ก์ด ํ•ฉ์ณ์กŒ๋‹ค๋Š” ์˜๋ฏธ๋กœ ์ด์ „ ์นธ์˜ ๋ธ”๋ก ์ˆซ์ž๋ฅผ ๋‘ ๋ฐฐ๋กœ ๋ฐ”๊ฟ”์ฃผ๊ณ , ํ˜„์žฌ ์นธ์€ ๋น„์›Œ์ค€ ๋‹ค์Œ, ์ด์ „ ์นธ์„ ๊ฐ€๋ฅดํ‚ค๋Š” ์ธ๋ฑ์Šค๋Š” ํ•˜๋‚˜๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์™ผ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ํ•ฉ์น  ์‹œ (์ด์ „ ์นธ, ํ˜„์žฌ ์นธ, ๋‹ค์Œ ์นธ)์ด (4, 4, 8)๋กœ ์žˆ์„ ๋•Œ, ๊ฒฐ๊ณผ๊ฐ€ (8, 8)์ด ๋˜์ง€ ์•Š๊ณ  (16)์œผ๋กœ ๋ชฝ๋•… ํ•ฉ์ณ์ง€๋Š” ๊ฒฝ์šฐ๋ฅผ ๋ง‰๊ธฐ ์œ„ํ•จ์ด๋‹ค.

 

โ—ป๏ธ ์ด์ „ ์นธ์— ์ง€๊ธˆ ๋ธ”๋ก๊ณผ ๋‹ค๋ฅธ ๋ธ”๋ก์ด ์žˆ์œผ๋ฉด

์ด์ „ ์นธ์€ ๋” ์ด์ƒ ๋ณผ ํ•„์š”๊ฐ€ ์—†๋Š” ์นธ์ด ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์ด์ „ ์นธ์„ ๊ฐ€๋ฅดํ‚ค๋Š” ์ธ๋ฑ์Šค๋ฅผ ํ•˜๋‚˜ ์ฆ๊ฐ€์‹œํ‚จ ๋‹ค์Œ ๊ทธ ์œ„์น˜๋กœ ์ง€๊ธˆ ๋ธ”๋ก์„ ์˜ฎ๊ธด ํ›„ ์ง€๊ธˆ ์ž๋ฆฌ๋ฅผ ๋น„์›Œ์ค€๋‹ค. ๋‹จ, ์ง€๊ธˆ ์ž๋ฆฌ๋ฅผ ๋น„์šธ ๋•Œ์—๋Š” ๋ธ”๋ก์˜ ์œ„์น˜๊ฐ€ ์˜ฎ๊ฒจ์ง€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์ธ์ง€ ์ฒดํฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. 

 

 

 

 

 

๐Ÿ™‹‍โ™€๏ธ ์˜๊ฒฌ

 ๊ณจ๋“œ 2 ์ด์ƒ ๋˜๋ฉด ์ง„์งœ.................์–ด๋งˆ์–ด๋งˆํ•˜๊ฒŒ ์ƒํ™ฉ์„ ์ƒ๊ฐํ•˜๊ณ  ์ผ€์ด์Šค๋ฅผ ๋‚˜๋ˆ„๊ณ  ์„ธ์‹ฌํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์งœ์•ผํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

 ๋””๋ฒ„๊น…ํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ ธ๋Š”๋ฐ(printํ•˜๋Š” ํ•จ์ˆ˜๋„ ๋”ฐ๋กœ ์งœ๊ณ ), ํ’€๊ณ  ๋‚˜๋‹ˆ๊นŒ ๋ฟŒ๋“ฏํ•˜๋„ค.

 

 ์•„์‰ฌ์šด ์ ์€.....์ผ€์ด์Šค๋งˆ๋‹ค ์ฝ”๋“œ๋Š” ๋น„์Šทํ•ด์„œ ๋ณ€์ˆ˜๋งŒ ๋ฐ”๊ฟ”์ฃผ๊ณ  ์žฌํ™œ์šฉํ•˜๋Š” ์ฝ”๋“œ ํ•˜๋‚˜๋กœ ๋”ฑ ํ•ฉ์น  ์ˆ˜ ์žˆ์„ ๋“ฏ ํ•œ ๊ฒƒ? ์•„์ง ๋‚ด ๊นœ๋ƒฅ์ด ๊ฑฐ๊ธฐ๊นŒ์ง€ ์•ˆ๋˜๋Š” ๊ฒƒ๋„ ์žˆ๊ณ , ์Šคํ„ฐ๋”” ์‹œ๊ฐ„์— ์ซ“๊ธฐ๋Š๋ผ ๊ทธ๋ƒฅ ์—ฌ๊ธฐ์„œ ๋๋ƒˆ๋‹ค... ๐Ÿ˜ญ

 

 

 

 

 

 

 

๐Ÿ’ป ์†Œ์Šค์ฝ”๋“œ: ์ž๋ฐ”(Java)

/** https://www.acmicpc.net/problem/12100 */
public class Main_๋ฐฑ์ค€_12100_2048_๊ณจ๋“œ2 {

	static int N, result=-1;
	static int[][] map;
	
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		N = Integer.parseInt(st.nextToken());
		map = new int[N][N];
		
		for (int i = 0; i < N; i++) {
			st = new StringTokenizer(br.readLine());
			for (int j = 0; j < N; j++) {
				map[i][j] = Integer.parseInt(st.nextToken());
			}
		}//input
		
		dfs(0);
		
		System.out.println(result);	
	}//end of main
	
	private static void dfs(int cnt) {
		if(cnt==5) {
			result = Math.max(result, getMaxNum(map));
			return;
		}
		
		// temp: cnt๋‹จ๊ณ„์˜ ์ดˆ๊ธฐ map๋ฐฐ์—ด ์ƒํƒœ๋ฅผ ์ €์žฅํ•ด๋‘๊ธฐ ์œ„ํ•จ
		int[][] temp = new int[N][N];
		copyArray(temp, map);// temp<-map
		
		for (int i = 0; i < 4; i++) {
			switch(i) {
				case 0:
					up(map);
					break;
				case 1:
					down(map);
					break;
				case 2:
					left(map);
					break;
				case 3:
					right(map);
					break;
			}
			dfs(cnt+1);
			copyArray(map, temp);// map<-temp
		}
		
	}//end of dfs
	
	private static void print(int[][] map) {
		for (int i = 0; i < N; i++) {
			System.out.println(Arrays.toString(map[i]));
		}
		System.out.println("===================================");
	}//end of print
	
	private static void copyArray(int[][] to, int[][] from) {
		for (int i = 0; i < N; i++) {
			for (int j = 0; j < N; j++) {
				to[i][j] = from[i][j];
			}
		}
	}//end of copyArray
	
	private static int getMaxNum(int[][] map) {
		int max = map[0][0];
		for (int i = 0; i < N; i++) {
			for (int j = 0; j < N; j++) {
				max = Math.max(max, map[i][j]);
			}
		}
		return max;
	}//end of getMaxNum
	
	private static void up(int[][] map) {
		for (int i = 0; i < N; i++) { //0~N-1์—ด
			int idx = 0;
			for (int j = 1; j < N; j++) { //1~N-1ํ–‰
				int before = map[idx][i];
				int now = map[j][i];
				
				if(now!=0) {
					// ์ด์ „ ์นธ์ด ๋นˆ ๊ณณ์ด๋ฉด ๊ทธ ๊ณณ์œผ๋กœ ๋‹น๊ฒจ๊ฐ„๋‹ค
					if(before==0) {
						map[idx][i] = now;
						map[j][i] = 0;
					}
					// ์ด์ „ ์นธ์— ์ˆซ์ž๊ฐ€ ์žˆ๊ณ , ๊ทธ ์ˆซ์ž๊ฐ€ ์ง€๊ธˆ ์นธ๊ณผ ๊ฐ™์œผ๋ฉด
					else if(before==now) {
						map[idx][i] *= 2;
						map[j][i] = 0;
						idx ++;
					}
					// ์ด์ „ ์นธ์— ์ˆซ์ž๊ฐ€ ์žˆ์ง€๋งŒ ์ง€๊ธˆ ์นธ๊ณผ ๋‹ค๋ฅด๋ฉด
					else {
						idx ++;
						map[idx][i] = map[j][i];
						if(idx!=j) map[j][i] = 0;
					}
				}
			}
		}
	}//end of up
	
	private static void down(int[][] map) {
		for (int i = 0; i < N; i++) { //0~N-1์—ด
			int idx = N-1;
			for (int j = N-2; j >= 0; j--) { //1~N-1ํ–‰
				int before = map[idx][i];
				int now = map[j][i];
				
				if(now!=0) {
					// ์ด์ „ ์นธ์ด ๋นˆ ๊ณณ์ด๋ฉด ๊ทธ ๊ณณ์œผ๋กœ ๋‹น๊ฒจ๊ฐ„๋‹ค
					if(before==0) {
						map[idx][i] = now;
						map[j][i] = 0;
					}
					// ์ด์ „ ์นธ์— ์ˆซ์ž๊ฐ€ ์žˆ๊ณ , ๊ทธ ์ˆซ์ž๊ฐ€ ์ง€๊ธˆ ์นธ๊ณผ ๊ฐ™์œผ๋ฉด
					else if(before==map[j][i]) {
						map[idx][i] *= 2;
						map[j][i] = 0;
						idx --;
					}
					// ์ด์ „ ์นธ์— ์ˆซ์ž๊ฐ€ ์žˆ์ง€๋งŒ ์ง€๊ธˆ ์นธ๊ณผ ๋‹ค๋ฅด๋ฉด
					else {
						idx --;
						map[idx][i] = map[j][i];
						if(idx!=j) map[j][i] = 0;
					}
				}
			}
		}
	}//end of down
	
	private static void left(int[][] map) {
		
		for (int i = 0; i < N; i++) { //0~N-1ํ–‰
			int idx = 0;
			for (int j = 1; j < N; j++) { //1~N-1์—ด
				int before = map[i][idx];
				int now = map[i][j];
				
				if(now!=0) {
					// ์ด์ „ ์นธ์ด ๋นˆ ๊ณณ์ด๋ฉด ๊ทธ ๊ณณ์œผ๋กœ ๋‹น๊ฒจ๊ฐ„๋‹ค
					if(before==0) {
						map[i][idx] = now;
						map[i][j] = 0;
					}
					// ์ด์ „ ์นธ์— ์ˆซ์ž๊ฐ€ ์žˆ๊ณ , ๊ทธ ์ˆซ์ž๊ฐ€ ์ง€๊ธˆ ์นธ๊ณผ ๊ฐ™์œผ๋ฉด
					else if(before==map[i][j]) {
						map[i][idx] *= 2;
						map[i][j] = 0;
						idx ++;
					}
					// ์ด์ „ ์นธ์— ์ˆซ์ž๊ฐ€ ์žˆ์ง€๋งŒ ์ง€๊ธˆ ์นธ๊ณผ ๋‹ค๋ฅด๋ฉด
					else {
						idx ++;
						map[i][idx] = map[i][j];
						if(idx!=j) map[i][j] = 0;
					}
				}
			}
		}
	}//end of left
	
	private static void right(int[][] map) {
		
		for (int i = 0; i < N; i++) { //0~N-1ํ–‰
			int idx = N-1;
			for (int j = N-2; j >= 0; j--) { //1~N-1์—ด
				int before = map[i][idx];
				int now = map[i][j];
				
				if(now!=0) {
					// ์ด์ „ ์นธ์ด ๋นˆ ๊ณณ์ด๋ฉด ๊ทธ ๊ณณ์œผ๋กœ ๋‹น๊ฒจ๊ฐ„๋‹ค
					if(before==0) {
						map[i][idx] = now;
						map[i][j] = 0;
					}
					// ์ด์ „ ์นธ์— ์ˆซ์ž๊ฐ€ ์žˆ๊ณ , ๊ทธ ์ˆซ์ž๊ฐ€ ์ง€๊ธˆ ์นธ๊ณผ ๊ฐ™์œผ๋ฉด
					else if(before==map[i][j]) {
						map[i][idx] *= 2;
						map[i][j] = 0;
						idx --;
					}
					// ์ด์ „ ์นธ์— ์ˆซ์ž๊ฐ€ ์žˆ์ง€๋งŒ ์ง€๊ธˆ ์นธ๊ณผ ๋‹ค๋ฅด๋ฉด
					else {
						idx --;
						map[i][idx] = map[i][j];
						if(idx!=j) map[i][j] = 0;
					}
				}
			}
		}
	}//end of right
	
}//end of classโ€‹

 

 

 

 

 

 

 

 

 

๐Ÿ’Ž ๐Ÿ’Ž ๐Ÿ’Ž

 

 

๏ผฐ๏ฝ๏ฝ“๏ฝ”๏ฝ…๏ฝ„ ๏ผข๏ฝ™ ๏ผณ๏ผก๏ผน

๐˜›๐˜ฉ๐˜ข๐˜ฏ๐˜ฌ๐˜ด ๐˜ง๐˜ฐ๐˜ณ ๐˜ณ๐˜ฆ๐˜ข๐˜ฅ๐˜ช๐˜ฏ๐˜จ