[백준/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을 추가합니다).

 

💥 느낀점

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

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

'백준' 카테고리의 다른 글

[백준/S2/DP/자바] 11053 가장 긴 증가하는 부분 수열  (0) 2024.05.26
[백준/S1/BFS/자바] 2178 미로 탐색  (0) 2024.05.22
[백준/S3/DFS/자바] 2606 바이러스  (0) 2024.05.07
[백준/S1/구현/자바] 2564 경비원  (0) 2024.04.30
[백준/S3/구현/자바] 24060 알고리즘 수업- 병합 정렬1  (0) 2024.04.19
'백준' 카테고리의 다른 글
  • [백준/S1/BFS/자바] 2178 미로 탐색
  • [백준/S3/DFS/자바] 2606 바이러스
  • [백준/S1/구현/자바] 2564 경비원
  • [백준/S3/구현/자바] 24060 알고리즘 수업- 병합 정렬1
희디비
희디비
  • 희디비
    희디비
    희디비
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Java
      • Spring
      • JPA
      • 백준
      • SWEA
      • Clone Coding
      • DB
      • 회고
      • 책
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 카테고리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    티스토리챌린지
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
희디비
[백준/S2/구현/자바] 1138 한 줄로 서기
상단으로

티스토리툴바