정보처리기사 실기 기출문제 2차원 배열 ㄹ자 알고리즘 c언어 예제

2차원 배열 ㄹ자 알고리즘


2018년이 시작되면서 자격증 준비하시는 분들도 많이 계실겁니다. 컴퓨터공학이나 IT관련 직종에 근무하려는 분들게서 가장 많이 취득하는 자격증이 정보처리기사 입니다.


공무원 시험 준비하시는 분들도 이 자격증을 많이 취득하는데요, 아무래도 가산점때문에 그런거 같습니다. 필기합격하신 분들이 이 글을 보게될텐데, 사실 이 글은 2015년도에 작성한 것을 다시 재작성한것입니다.


이부분 참고하시고, 글 읽어주시면 됩니다.


정보처리기사 실기시험에 자주출제되는 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 와 같이하였습니다.


하지만, 문법적인 부분에서 볼때 접근하는 방식이 조금 다르다고 이야기할 수 있습니다. 그럼 결과값이 어떻게 나오는지 빌드해보겠습니다.


[결과]


출력결과는 정상적으로 ㄹ자 알고리즘에 맞게 출력되었습니다. 이해가 잘 안되신다면, 옆에 공책하나 나두고 연필을 이용해서 연습해보면 근방 이해되실겁니다. 어렵지 않습니다.



너무 간단하기 때문에 별도의 소스는 공개하지 않았습니다. 사용한 툴은 vc++6.0 버전인데, 오래된 툴이라서 구하기 쉽지는 않을겁니다. c언어 컴파일되는 아무 툴이나 사용해도 됩니다.