ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [선택정렬]
    알고리즘 2022. 10. 9. 23:12

    문제

    N개이 숫자가 입력되면 오름차순으로 정렬하여 출력하는 프로그램을 작성하세요. 정렬하는 방법은 선택정렬입니다.

    입력설명
    첫 번째 줄에 자연수 N(1<=N<=100)이 주어집니다.
    두 번째 줄에 N개의 자연수가 공백을 사이에 두고 입력됩니다. 각 자연수는 정수형 범위 안에 있습니다.

    출력설명
    오름차순으로 정렬된 수열을 출력합니다.

    입력예제 1
    6
    13 5 11 7 23 15

    출력예제 1
    5 7 11 13 15 23


    결과

    O

    내가 푼 방식

    const solution = (arr) => {
      return arr.sort((a,b) => a-b);
    }
    
    solution([13,5,11,7,23,15])

     

    접근과정

    1. sort 메소드를 써서 오름 차순을 시킨다.  

     

    모범답안

    function solution(arr){
        let answer=arr;
        for(let i=0; i<arr.length; i++){
            let idx=i;
            for(let j=i+1; j<arr.length; j++){
                if(arr[j]<arr[idx]) idx=j;
            }
            [arr[i], arr[idx]] = [arr[idx], arr[i]];
        } 
        return answer;
    }

    리뷰

    1. 이중포문을 돌려 제일 작은 수를 i번 위치에 넣는 것이 포인트이다. 

    2. 변수 idx를 만들고 첫번째 반복문의 i값을 초기값으로 넣고 두 번째 반복문에서 제일 작은 값의 index값을 idx에 넣는다.

    3. 첫번째 반복문의 i자리에 저장해둔 제일 작은 값 arr[idx]과 바꾼다. 

    '알고리즘' 카테고리의 다른 글

    [이분검색]  (0) 2023.01.28
    [그리디] 결혼식  (0) 2023.01.28
    [자료구조(스택/큐)] 괄호문자제거  (0) 2022.09.25
    [자료구조(스택/큐)] 올바른괄호  (0) 2022.09.18
    [효율성/해쉬] 아나그램  (0) 2022.09.04

    댓글

Designed by Tistory.