728x90
반응형
2024.11.17기준 - 브론즈1
728x90
백준, BEAKJOON, BOJ, JAVA, 자바
🟥 풀이
이 문제는 서로 짝이 맞는 P와 C를 바꿔주는 문제입니다.
1. P와 C의 인덱스를 저장할 리스트를 선언하고, 문자열을 검사해 인덱스를 저장합니다.
int n = Integer.parseInt(br.readLine()); // 문자열의 길이
char[] arr = br.readLine().toCharArray();
List<Integer> pIndex = new ArrayList<>(); // P의 인덱스 리스트
List<Integer> cIndex = new ArrayList<>(); // C의 인덱스 리스트
// P와 C의 인덱스를 찾아 리스트에 저장한다.
for (int i = 0; i < n; i++) {
if (arr[i] == 'P') {
pIndex.add(i);
} else if (arr[i] == 'C') {
cIndex.add(i);
}
}
2. 서로 짝이 맞다면 서로 문자열을 바꿔줍니다.
// 서로 짝이 맞다면 문자를 바꿔준다.
for (int i = 0; i < (pIndex.size() < cIndex.size() ? pIndex.size() : cIndex.size()); i++) {
arr[pIndex.get(i)] = 'C';
arr[cIndex.get(i)] = 'P';
}
3. 출력해줍니다.
// 출력
for (char c : arr) {
sb.append(c);
}
🟪 코드
package Main;
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
int n = Integer.parseInt(br.readLine()); // 문자열의 길이
char[] arr = br.readLine().toCharArray();
List<Integer> pIndex = new ArrayList<>(); // P의 인덱스 리스트
List<Integer> cIndex = new ArrayList<>(); // C의 인덱스 리스트
// P와 C의 인덱스를 찾아 리스트에 저장한다.
for (int i = 0; i < n; i++) {
if (arr[i] == 'P') {
pIndex.add(i);
} else if (arr[i] == 'C') {
cIndex.add(i);
}
}
// 서로 짝이 맞다면 문자를 바꿔준다.
for (int i = 0; i < (pIndex.size() < cIndex.size() ? pIndex.size() : cIndex.size()); i++) {
arr[pIndex.get(i)] = 'C';
arr[cIndex.get(i)] = 'P';
}
// 출력
for (char c : arr) {
sb.append(c);
}
bw.write(sb.toString());
bw.flush();
bw.close();
br.close();
}
}
728x90
반응형
'코딩테스트 일기 (BAEKJOON)' 카테고리의 다른 글
BEAKJOON / 백준 - JAVA 32215번 코드마스터 2024 (0) | 2024.11.19 |
---|---|
BEAKJOON / 백준 - JAVA 32209번 다음 달에 봐요 (0) | 2024.11.18 |
BEAKJOON / 백준 - JAVA 32154번 SUAPC 2024 Winter (0) | 2024.11.16 |
BEAKJOON / 백준 - JAVA 13706번 제곱근 (1) | 2024.11.15 |
BEAKJOON / 백준 - JAVA 32621번 동아리비 횡령 (0) | 2024.11.14 |