2014년 7월 18일 금요일

2290 LCD TEST

모니터에 숫자모양의 그림을 뿌리는 문제이다.
원래같으면 문자열 배열로 하나하나 만들면되는데, 크기까지 입력받기 때문에 그렇게는 할 수 없다.

이 문제는 숫자그림의 성질을 이용하면 된다.
      --   --          --   --   --   --   --    --  
   |     |    | |   | |    |        | |  | |   | |  | 
   |     |    | |   | |    |        | |  | |   | |  | 
      --   --    --   --   --         --   --       
   | |        |     |     | |  |    | |  |     |  |  | 
   | |        |     |     | |  |    | |  |     |  |  | 
      --   --          --   --         --   --    -- 
이것이 크기 2일때의 그림인데(여기다 옮기면서 간격이 약간 다르다) 성질은 아래와 같다.
1. 가로 문자 '-' 는 첫줄과 중간줄, 끝줄에만 나오며, 첫칸과 끝칸은 공백, 중간은 크기만큼 출력한다.
2. 세로 문자 '|' 는 1번에 해당하지 않은 줄에서 나오며, 첫칸과 끝칸에만 존재한다.

이 두가지 사실을 이용해서 '-'는 각 숫자마다 첫줄,중간줄,끝줄의 어디에 나오는지를 bit masking 한 배열을 만든다.
'|'는 각 숫자를 세로로 반절 나눠서 첫칸,끝칸 어디에 나오는지를 bit masking 한 배열을 만든다.

위 배열을 이용해서 공백을 섞어 출력해주면 된다.

댓글 없음:

댓글 쓰기