1495: 대각선 지그재그
시간제한: 1 Sec 메모리제한: 64 MB제출: 1065 해결: 571
정사각형의 크기를 입력 받은 후 대각선으로 지그재그 형태인 다음과 같은 형태로 출력하는 프로그램을 작성하시오.
< 처리조건 >
(1) 가장 왼쪽 위의 좌표부터 차례로 숫자를 대입시킨다.
(2) 대각선을 기준으로 계속 지그재그
모양으로 채워져야 하며 숫자는 1씩 증가하는 형태로 채워나가야 한다.
정사각형의 크기 n(1부터 100사이의 정수)을 입력받는다.
위에서 언급한 형태의 지그재그 모양의 정사각형의 내부 숫자를 차례로 채운 후의 모습을 출력한다. 숫자 사이는 공백으로 구분한다.
3 1 3 4
2 5 8
6 7 9 |
2 1 3
2 4 |
<<해결방법>> | |
if (direction == RIGHT_UP) { if (x == size - 1) {//행이 끝이라면 오른쪽 옆으로 이동 y = y + 1; direction = LEFT_DOWN;//방향바꾸기 } else { if (y == 0) {//열이 가장 왼쪽까지 왔다면 한줄 아래로. x = x + 1; direction = LEFT_DOWN;//방향비꾸기 } else {//대각선 왼쪽 방향으로 한칸 이동 x = x + 1; y = y - 1; } } } else { if (y == size - 1) {//열이 끝이라면.. 오른쪽으로 더 이상 갈곳이 없다면, 행 증가 x = x + 1; direction = RIGHT_UP;//방향 바꾸기 } else { if (x == 0) { //더이상 올라갈 곳이 없다면 오른쪽으로 한칸 이동 y = y + 1; direction = RIGHT_UP;//방향전환 } else {//대각선 오른쪽 방향으로 한 칸 이동 x = x - 1; y = y + 1; } } } |
지그 재그로 왔다갔다가 해야하기 때문에... 왼쪽으로 내려가면서 찍다가 끝을 만나면
한칸 아래로 내려와서 다시 오른쪽으로 올라가면서 찍고 또 끝을 만나면 옆으로 한칸 가고
다시 내려오는 것을 적절하게 구현하면 됩니다.
'프로그래밍 > 알고리즘' 카테고리의 다른 글
알고리즘 공부 참고 사이트 (0) | 2015.04.24 |
---|---|
1695: 단지번호붙이기 (0) | 2015.04.21 |
1997: 떡 먹는 호랑이 (0) | 2015.04.21 |
2074: 마방진 (0) | 2015.04.21 |
1014: 돌다리 건너기 (0) | 2015.04.21 |