Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

희디비

[백준/S2/구현/자바] 1138 한 줄로 서기 본문

백준

[백준/S2/구현/자바] 1138 한 줄로 서기

희디비 2024. 4. 21. 14:50

💡 문제

N명의 사람들은 매일 아침 한 줄로 선다.

이 사람들은 자리를 마음대로 서지 못하고 오민식의 지시대로 선다.

어느 날 사람들은 오민식이 사람들이 줄 서는 위치를 기록해 놓는다는 것을 알았다.

그리고 아침에 자기가 기록해 놓은 것과 사람들이 줄을 선 위치가 맞는지 확인한다.

사람들은 자기보다 큰 사람이 왼쪽에 몇 명 있었는지만을 기억한다. N명의 사람이 있고,

사람들의 키는 1부터 N까지 모두 다르다.

각 사람들이 기억하는 정보가 주어질 때, 줄을 어떻게 서야 하는지 출력하는 프로그램을 작성하시오

 

입력

첫째줄 사람의 수 N이 주어진다. N <= 10

둘째줄에는 키가 1인 사람 부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명 있었는지 주어진다.

 

💻 출력 / 제한

 

첫째줄에 줄을 선 순서대로 키를 출력한다. / 시간 제한 : 2초 / 메모리 : 128MB 


풀이 방법 

 

문제 풀이에  1시간 정도 소모가 되었다.  키워드는

둘째줄에 입력되는 수들이 자신이 들어가고 싶은 index를 표시한다는 것이였다.

 

예제를 보면 뒤에서 부터 접근할때 4는 arr[0]에 들어가게된다.

arr = { 4 } 

3은 1번째 인덱스

arr = { 4, 3 }

2는 1번째 어?.. 1번째 인덱스에 수가 있다 그렇다면 뒤쪽의 수를 한칸씩 밀고 들어가게 된다.

arr = { 4, 2, 3 }

1은 2번째 인덱스 마찬가지로 한칸씩 밀고 그 index에 들어간다.

arr = { 4, 2, 1, 3 }

 

문제를 풀고 다른사람의 답을 보는데

이렇게 넣고자 하는 index에 값이 있다면 한칸씩 오른쪽으로 밀어주는게 있었다.

 

 

ArrayList.add(int index, E element) 확인 해보자

 

실제로 값이 있다면 오른쪽으로 원소를 밀어주고 있었다.

 

 

주석을 읽어보면 내용이 있다.

목록. 현재 해당 위치에 있는 요소(있는 경우)를 이동하고
     * 오른쪽의 모든 후속 요소(인덱스에 1을 추가합니다).

 

💥 느낀점

간혹 쓰던 메소드였는데 저런 기능이 있는지 몰랐다.

메소드를 사용할때 실제 구현 부분을 살펴 볼 필요가 있는 것 같다.