[백준/JAVA] 1138번: 한 줄로 서기
📖 문제
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