문제

" ┌ ┐┘└├ ┤ ┬ ┴ ┼ ─ │ " 이 기호들을 사용하여 11x11 오목판을 출력해라.

" ┌ ├ ┤ ┬ ┴ ┼ ─ │ " 이 기호들을 사용하여 11x11 오목판을 출력해라.


문제 해설

  1. ┼ 모양으로 내부를 채운다.
  2. ┌ └ 모양으로 각 모서리를 채워준다.
  3. ├ ┤를 사용하여 좌, 우 여백을 닫아준다.
  4. ┬ ┴를 사용하여 위, 아래 여백을 닫아준다.

💢중요💢 조건을 실행하는 순서를 잘 생각하지 않으면 이상한 모양이 나온다. 


public static void main(String[] args) {

		for (int x = 0; x < 12; x++) {
 			for (int y = 0; y < 10; y++)
 				 if (x == 0 && y == 9)// 오른쪽 위 모서리막기
 					System.out.print("┐");
 				else if (x == 11 && y == 9)// 오른쪽 아래 모서리막기
 					System.out.print("┘");
 				else if (x == 0 && y == 0)// 왼쪽 위 모서리막기
 					System.out.print("┌");
 				else if (x == 11 && y == 0)// 왼쪽 아래 모서리막기
 					System.out.print("└");
 				else	if (x == 0)// 위에 막기
 					System.out.print("┬");
 				else if (x == 11)// 아래 막기
 					System.out.print("┴");
 				else if (y == 0)// 왼쪽 막기
 					System.out.print("├");
 				else if (y == 9)// 오른쪽 막기
 					System.out.print("┤");
 				else
 					System.out.print("┼");

  			
 			System.out.println();
			}
		}

위 코드로 if~else if 문으로 도배를 하니까 코드가독성떨어져서 구조 개선을 하기 위해 다시 리펙토링 작업을 해보았다.


[코드 개선작업 완료]

public static void main(String[] args) {

			for (int x = 0; x < 12; x++) {
				for (int y = 0; y < 12; y++) {
					
					
					if(x==0)
						if(y==0)
							System.out.print("┌");
						else if(y==11)
							System.out.print("┐");
						else
							System.out.print("┬");
					
					else if(x==11)
						if(y==0)
							System.out.print("└");
						else if(y==11)
							System.out.print("┘");
						else 
							System.out.print("┴");
						
					else
						if(y==0)
							System.out.print("├");
						else if (y==11)
							System.out.print("┤");
						else
							System.out.print("┼");
							
				}
				System.out.println();
			}
		}

 

기존에 하나에 if문에 &&(and) 연산자를  사용하여 X, Y의 조건을 묶어서 표현하니 가독성이 떨어졌던 것이었다.

 

이런 식으로 X조건 아래에 Y조건을 붙여서 시각적으로 잘 들어오게 표현한 후 비슷한 조건들끼리 묶어줬다. 


결과

+ Recent posts