SW 배움터/앱인벤터2

앱인벤터2 강좌 37 : 숫자 정렬(sorting)을 배워보자.

kusson 2021. 10. 8. 15:53
반응형
728x170

앱인벤터로 앱을 .여러개 만들다 보면 어느 순간 숫자 정렬에 관한 문제에 마주치게 된다. 점수를 계산한다든지, 돈을 누가 많이 내야 하는지 등등 여러가지 상황에서 숫자를 정렬해야 하는 문제에 마주치게 되는 것이다. 오름차순으로 정렬하건, 내림차순으로 정렬하건 상관없이 숫자를 정렬해야 하는 문제에 마주치게 되면 골머리를 썩히게 된다. 숫자정렬(sorting)에 관한 문제는 앱인벤터 뿐만 아니라 다른 랭귀지에서도 중요한 문제로 부각되는데 이는 정렬 알고리즘이라는 한 부분의 챕터가 마련되어 있을 정도로 중요한 파트이기 때문이다. 주요 정렬 방법론으로는 비교정렬, 제자리 정렬, 온라인 정렬등 3가지 방법론이 존재하는데 각 방법론 마다 따로 저명한 정렬 알고리즘이 존재한다. 

 

일반 스크립트 코딩에서는 반복문이나 루프를 이용해서 여러번 비교하는 방식으로 정렬을 할 수 있으나 앱인벤터2에서는 노코드 특성상 이를 구현하는 것이 상당히 까다롭고 힘들다. 아마 혼자서 정렬 알고리즘을 생각하고 이를 노코드로 구현하려면 며칠 몇날을 새야 할지도 모르겠다. 필자도 인터넷을 뒤지고 유튜브를 헤매다 어떻게 코드를 구현하게 되었는데 이를 여기에 공개한다. 

 

 

이 방법은 필자의 로또 족집게와 로또 킬러앱에 요긴하게 쓰였는데 간단히 코드와 실행화면을 보여주겠다.

 

필자의 로또 킬러 앱 화면이다. '로또 킬러 AI 번호  추출 시작'이란 버튼을 클릭하면 버튼 밑으로 5게임의 숫자가 나열된다.

 

먼저 정렬 알고리즘을 적용하지 않고 추출된 숫자만을 나열하게 하는 코드이다.

 

나오는 숫자들이 정렬 되어 있지 않고 큰 숫자, 작은 숫자가 막 뒤죽 박죽으로 나열되어 있다. 

 

 

이제 정렬 알고리즘을 적용한 코드이다. 실제 알고리즘 상으로는 상당히 까다로운 방식이지만 막상 코드로 구현해 놓으니 짧고 깔금하게 코드가 정리되었다.

 

실제 숫자가 정렬되어 나온 앱 화면이다. 6개의 숫자가 오름차순으로 깔끔하게 잘 정렬되어 있다.

 

 

정렬을 만드는 코드를 살펴보자. '각각 반복(for ~ each)문' 2개가 겹쳐 있고 그 안에 '만약 ~ 이라면 실행'(if ~ then)문이 하나 있다. 먼저 두개의 숫자를 비교해서 더 큰 숫자를 temp 리스트 2번에 넣고 작은 숫자는 1번에 넣는다. 이런 식으로 모든 숫자를 비교하는 루틴이다. 첫 번째 반복문에서 5번의 반복이 주어지고 두번째 반복문에서도 5번의 반복이 주어지고 가장 안쪽의 '만약 ~ 이라면 실행' 부분에서는 5번의 비교가 이루어 진다. 즉 5X5X5 = 125번의 반복 비교를 거쳐서 실제 6개 숫자의 정렬이 이루어 지는 것이다. 위의 루틴만 적용하면 아무리 큰 숫자의 정렬이라도 깔끔하게 정렬이 되는 마법의 알고리즘이다.

 

 

 

  •  
반응형
그리드형