ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1/12기록 - 프로그래머스 문제풀이 #3
    Algorithm 2022. 1. 12. 11:24
    728x90

    앞에 level 1 두 문제가 생각보다 너무 쉬워서 공부가 안 된 것 같은 찝찝함이 있어서 그냥 아무거나 level 1으로 한 문제만 더 풀자 하면서 세 번째 문제에 도전해 보았다.

     

     

     

    K번째 수 문제, 문제 이해가 조금 빡셀 수 있는데 차근차근 읽어보면, commands 배열안에 있는 수를 가지고 array배열을 잘라서 새로운 배열을 만들어 return 하는 거였다.

     

    알고리즘 생각

    1. commands.length 만큼 새로운 배열 answer를 생성한다.

    2. 이차원 배열인 commands 배열의 가로 인덱스로 array 배열을 자를 시작과 끝을 표시한다.(배열 인덱스 시작이 0이라는 점 주의!!)

    3. ArrayList 배열을 선언하고, for문으로 array 배열의 해당 인덱스를 하나씩 차례대로 담아준다.

    4. ArrayList 배열을 sort로 오름차순 정리하고, answer 배열에 ArrayList에 담긴 commands 배열의 마지막 인덱스-1 번째 숫자를 뽑아 내어 담아준다.

     

     

     

    알고리즘을 생각하면서 풀어보았다. 

    ArrayList 포스팅에서 배운 add(), get(), collections.sort() 메소드를 모두 사용해서 풀어보았고, 배열의 인덱스가 0 부터 시작이라는 점을 주의하여 풀어보았다.

     

    ** 이 문제에서 ArrayList를 사용할 때 가장 주의해야 할 점은 list.clear() 메소드를 사용하는 것이다. for문으로 돌리고 있기 때문에 항상 맨 처음에 list를 비워주지 않으면 누적된 값이 쌓이게 된다. 

     

    ** ArrayList 메소드를 적극 이용하여 배열만으로 담기 힘든 요소들을 담고, 뽑아낼 수 있었다.

     

    ** 다른 사람의 풀이를 보니, sort메소드를 구현하는 방식, copyOfRange(배열, 시작, 끝) 메소드를 사용하는 방식들이 있었다. 별 생각없이 sort를 사용하여 풀었는데, 다른 사람의 풀이 댓글을 보니 정렬 문제이니 만큼 sort를 함수로 구현하여 사용하는 것이 맞지 않나라는 생각이 들었다.

     

    ** copyOfRange(array, start, stop) : array배열의 start 인덱스부터 stop-1 인덱스까지 복사하는 메소드

     

     

     

    통과하면서 1/12 오늘의 기록 끝!!!!!!!!

    728x90
Designed by Tistory.