반응형
🔺 문제
3048번: 개미
T초가 지난 후에 개미의 순서를 출력한다. 첫 번째 개미 그룹은 왼쪽에서 오른쪽으로 움직이고, 두 번째 그룹은 반대 방향으로 움직인다.
www.acmicpc.net
🔺 코드
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
import java.util.*;
import java.io.*;
public class Main {
static int N1, N2, T;
static ArrayList<Node> list = new ArrayList<>();
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine()," ") ;
N1 = Integer.parseInt(st.nextToken());
N2 = Integer.parseInt(st.nextToken());
char[] tmp1 = br.readLine().toCharArray();
for(int i = N1 - 1 ; i >= 0 ; i--) {
list.add(new Node(tmp1[i], true));
}
char[] tmp2 = br.readLine().toCharArray();
for(int i = 0 ; i < N2 ; i++) {
list.add(new Node(tmp2[i], false));
}
T = Integer.parseInt(br.readLine()); // T : 교환 횟수
// Case 1 : T가 충분히 큰 경우
if(N2 + N1 - 1 <= T) {
// tmp2 배열을 그대로 추가
for(int i = 0 ; i < tmp2.length ; i++) {
sb.append(tmp2[i]);
}
// tmp1 배열을 역순으로 추가
for(int i = tmp1.length - 1; i >= 0 ; i--) {
sb.append(tmp1[i]);
}
System.out.println(sb.toString());
return;
}
// Case 2 : T가 작은 경우
while(T --> 0) { // 인접한 두 노드 객체 비교해 교환
for(int i = 0 ; i < list.size() -1 ; i++) {
Node cur = list.get(i);
Node next = list.get(i + 1);
if(!cur.team || cur.team == next.team) continue;
list.set(i, next);
list.set(i + 1, cur);
i++;
}
}
// 정렬된 리스트에서 문자를 순서대로 추가해 출력
for(int i = 0 ; i < list.size() ; i++) {
sb.append(list.get(i).c);
}
System.out.println(sb.toString());
}
}
class Node {
char c; // 문자
boolean team; // 팀 정보
Node(char c, boolean team) {
this.c = c;
this.team = team;
}
}
|
cs |
✅ 해결 아이디어
✔ 시뮬레이션
🔺 다른 풀이들
- 2차원 배열 사용
로그인
www.acmicpc.net
💬 느낀 점
쉽지 않아요....
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
6/19 |
(참고)
백준 3048. 개미 :: 돼지개발자
백준 3048. 개미 (https://www.acmicpc.net/problem/3048) "단순 시뮬레이션" 해당 문제는 단순 시뮬레이션 문제인 것 같다. 실제로 해보는 것이 답. 근데 어떻게 구현 할 것인가. 단순 시뮬레이션을 돌려야 하
jaejin89.tistory.com
반응형
'코테 > 백준' 카테고리의 다른 글
[백준/JAVA] 1966번: 프린터 큐 (0) | 2023.06.20 |
---|---|
[백준/JAVA] 2161번: 카드1 (0) | 2023.06.19 |
[백준/JAVA] 2884번: 알람 시계 (1) | 2023.06.19 |
[백준/JAVA] 2490번: 윷놀이 (0) | 2023.06.19 |
[백준/JAVA] 10798번: 세로읽기 (0) | 2023.06.18 |