2차원 배열 ㄹ자 알고리즘 및 c언어 로 코딩.

작성자 : 서비님(https://dslee1.blogspot.kr/)



------------------------------------------------------------- 이 포스팅과 관련된 포스팅
- 유클리드 호제법을 이용한 최대공약수,최소공배수 알고리즘.(c언어 코딩포함)
화폐 단위별 매수 알고리즘(정보처리기사) c언어 소스 포함.
버블정렬 알고리즘(정보처리기사) c언어 코딩 포함.

A배열에서 B배열로 옮기는 알고리즘 A(3,4) -> B(4,3) 정보처리기사 (C언어 코딩 포함)



[2차원 배열 ㄹ자 알고리즘]

정말 오랜만에 글을 적는것 같습니다. 한동안 멍 때린 기분이네요..

오늘은 정보처리기사 실기에 출제되었던, 2차원 배열 ㄹ자 알고리즘에 대해서 한번 살펴볼까 합니다. 알고리즘을 고민하던중에 문제를 해결하고, 또 코딩까지 완료를 해서 결과값을 보게 되니 보람을 느껴서 부족하지만, 도움이 되는 분이 있지 않을까 싶어서 적어 봅니다.

[순서도]


윈도우 그림판으로 대충 순서도를 그려 보았습니다. 날림의 흔적이 여실이 나타나네요. ㅎ  일단 설명을 간단히 해보겠습니다. 저 순서도대로 코딩을 하게 되면 결과값은 이렇게 나옵니다.

son(5,5) 위치에 정확히 위의 데이터가 저장이 되어서 나옵니다. 처음에 r=1,5,1 속해 있는 반복문이 즉 [1,1],[2,1][3,1][4,1][5,1] [행]의 위치라고 보시면 됩니다.


또한 밑에 c=start,end,sw 부분은 [1,1][1,2][1,3][1,4][1,5] 와 같은 [열]의 위치입니다. 때문에 [열]부분의 데이터를 모두 입력을 하고, 그다음 행의 위치에 열단위로 데이터가 들어가는 구조로 되어있습니다.


tr=start


start=end


end=tr


sw=sw*(-1)


부분은 ㄹ 자 구조를 만들기 위한 자리 바꿈 부분입니다.


그럼 이부분을 c언어로 코딩을 하면 어떻게 나오는지 볼까요?


[코딩]


주석에 달려있는 설명을 참고 하면 되겠는데요, 일단 알고리즘 순서도와 비교할경우에 코딩이 약간 다르다는것을 알수 있습니다. 이부분은 아마도, 실제 알고리즘 구상하는거랑, 프로그래밍 언어용 툴 을 이용해서 결과값을 얻어내는 방식이랑은 차이점이 있다고 볼수 있습니다. 보시는바와 같이 for 문 의 증가값을 sw로 입력을 하게되면, 무한루프가 발생하게 됩니다. 알고리즘에 순서도에서 c=start, end, sw 와 같이 하였지만, 문법적인 부분에 접근을할때에는 조금 달라진다고 말씀 드리고 싶네요.


그럼 결과가 어떻게 나오는지 빌드를 해볼까요?


[결과]


네. 저희가 원하는 데이터가 정확히 출력이 되는것을 볼수 있습니다.

코딩 부분을 그림판으로 작성한 이유는 직접 해보시라는 의미에서 작성을 하였습니다. 뭐든 직접하는것이 보람을 느끼게 되는것 아닐까요?

오늘은 누구는 잘 알고있는 것일수도 있지만 , 모르는분들을 위해서 조금이나마 도움이 될까바 2차원 배열 ㄹ자 알고리즘에 대해서 한번 살펴보았습니다.