원래같으면 문자열 배열로 하나하나 만들면되는데, 크기까지 입력받기 때문에 그렇게는 할 수 없다.
이 문제는 숫자그림의 성질을 이용하면 된다.
-- -- -- -- -- -- -- --
| | | | | | | | | | | | | |
| | | | | | | | | | | | | |
-- -- -- -- -- -- --
| | | | | | | | | | | | |
| | | | | | | | | | | | |
-- -- -- -- -- -- --
이것이 크기 2일때의 그림인데(여기다 옮기면서 간격이 약간 다르다) 성질은 아래와 같다.
1. 가로 문자 '-' 는 첫줄과 중간줄, 끝줄에만 나오며, 첫칸과 끝칸은 공백, 중간은 크기만큼 출력한다.
2. 세로 문자 '|' 는 1번에 해당하지 않은 줄에서 나오며, 첫칸과 끝칸에만 존재한다.
이 두가지 사실을 이용해서 '-'는 각 숫자마다 첫줄,중간줄,끝줄의 어디에 나오는지를 bit masking 한 배열을 만든다.
'|'는 각 숫자를 세로로 반절 나눠서 첫칸,끝칸 어디에 나오는지를 bit masking 한 배열을 만든다.
위 배열을 이용해서 공백을 섞어 출력해주면 된다.
댓글 없음:
댓글 쓰기