코테/백준

[백준/JAVA] 1138번: 한 줄로 서기

imname1am 2024. 2. 28. 16:11
반응형

📖 문제

 

1138번: 한 줄로 서기

첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다

www.acmicpc.net

 

 

💡  풀이 방식

• 구현 (그리디)

키가 큰 순으로 입력받은 키대로 ArrayList에 삽입한다.

 

이 때, .add(int idx, E e)를 활용한다.

 

예제1을 살펴보자.

 

키가 4인 사람이 0일 때, 리스트의 0번째에 4를 삽입한다. → list.add(4, 0) / list : [4]

키가 3인 사람이 1일 때, 리스트의 1번째에 3을 삽입한다. → list.add(3, 1) / list : [4,3]

키가 2인 사람이 1일 때, 리스트의 1번째에 2을 삽입한다. → list.add(2, 1) / list : [4, 2, 3]

키가 1인 사람이 2일 때, 리스트의 2번째에 1을 삽입한다. → list.add(2, 1) / list : [4, 2, 1, 3]

 

 

 

🔺 코드

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
import java.util.*;
import java.io.*;
 
public class Main {
    static int N;
    static int[] arr;
    static List<Integer> ans = new ArrayList<>();
    
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        
        N = Integer.parseInt(br.readLine());
        arr = new int[N + 1]; 
        
        st = new StringTokenizer(br.readLine(), " ");
        for(int i = 1 ; i <= N ; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }
        
        for(int i = N ; i >= 1 ; i--) {
            ans.add(arr[i], i);
        }
        
        StringBuilder sb = new StringBuilder();
        for(int k : ans)
            sb.append(k).append(" ");
        System.out.println(sb.toString());
    }
}
 
cs

 

 

 

➕ 다른 풀이 방식

 

[백준] 1138번 한 줄로 서기 (java, 구현)

www.acmicpc.net/problem/1138 1138번: 한 줄로 서기 첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇

haerang94.tistory.com

 

로직은 같은데 이걸 리스트가 아니라 배열로 구현하신 듯 했다,,

 

백준 1138번 : 한 줄로 서기 java

이 문제는 키가 1 2 3 4인 사람이 순서대로 있을 때 자신의 왼쪽에 몇 명이 있었는지를 입력받아 자신의 자리를 찾아가는 문제입니다. 이를 그림으로 설명드리겠습니다. 위의 그림은 예제 1번의

dy-coding.tistory.com

 

[JAVA] [백준 1138] 한 줄로 서기

N명의 사람들은 매일 아침 한 줄로 선다. 이 사람들은 자리를 마음대로 서지 못하고 오민식의 지시대로 선다.어느 날 사람들은 오민식이 사람들이 줄 서는 위치를 기록해 놓는다는 것을 알았다.

velog.io


💦 어려웠던 점

- 아이디어 자체를 생각해내기가 어려웠다,,

- 예외처리를 생각하고 하려다 보면 항상 머릿속에서 더 꼬이는 것 같다,, 일반 규칙을 찾는 것이 먼저인데!!

 

 

🧐 새로 알게 된 내용

자바의 .add() 함수에 객체만 더하는 게 있는 게 아니고, 원하는 인덱스에 객체를 넣는 함수도 있다~~~~

.add(int idx, E e) : idx위치에 객체 추가

 

🔗 참고

 

 

1회독 2회독 3회독 4회독 5회독
V        

(참고)

 

백준 1138 한 줄로 서기 Java

그리디 문제에서 만난 한 줄로 서기 문제이다. N제한이 10인 걸보고 백트래킹이나, 순열로 완전 탐색을 할까 고민했지만 그리디적인 해법으로 풀어보려고 노력했다. 문제를 간단히 설명하면 N명

dundung.tistory.com

 

반응형