비투즈의 노트르담

 

홀수 마방진을 프로그래밍 해보자

 

마방진은 가로 세로 대각선 합이 모두 같은 값이 되게 하는 놀이인데 규칙이 있기 때문에 쉽다.

 

5*5마방진을 할때 왼쪽 그림과 같이 다이아몬드 빈 고안을 만들어 숫자를 밑에서부터 올려 쓴 후

 

밖에 삐져나온 값을 반대편에 써주기만 하면 끝이다.

 

그런 후 오른쪽 그림을 보면 1부터 시작해서 대각선으로 올라가다 빠져나가면 다시 밑에나 왼쪽부터 시작하는 걸 알 수 있다.

 

그리고 그 자리에 값이 있으면 밑으로 한칸 내려가게 되는데 이것을 프로그래밍 해보자면

 

1. 1의 시작지점을 잡는다 보통 0행 2열을 기준으로 한다

2. 대각선으로 올라간다

3. 위나 오른쪽으로 삐져나가면 왼쪽이나 밑에서 다시나온다

4. 값이 있으면 한칸 내려간다.

 

이렇게 알고리즘 문제는 항상 풀이를 이해하고 풀어야 쉽다.

 

여기서 1.2.4는 쉽겠지만 3이 어려운데

 

자바는 잘 모르겠지만 c언어 경우

 

음수를 양수로 나누면 나머지가 양수가 나오게 된다

 

예를 들어 -3을 2로 나누면 보통은 몫이 0 나머지가 -3이 나와야하지만

               c에서는 몫이 -2가 되고 나머지가 1이 된다.

               이를 잘 이용하면 if나 for문을 많이 쓰지 않는 간단한 프로그래밍이 된다.

               하지만 다른 언어에서는 이것이 적용이 되지 않을 수 있으니 확인해보는 것이 좋다.

'프로그래밍 > 프로그래밍Tip' 카테고리의 다른 글

싱글턴 패턴  (0) 2013.05.24
SimpleVisualLauage (svl)  (0) 2013.04.11
개미수열  (0) 2013.04.11
변수표기법  (0) 2013.04.05
스타일  (0) 2013.04.05