📌 문제
https://www.acmicpc.net/problem/3028
📌 코드
package baekjoon;
import java.util.*;
public class Q3028 { // 창영마을
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<Character> list = new ArrayList<>(Arrays.asList('1', '0', '0')); // 1
String str = scanner.next(); // 2
for (int i = 0; i < str.length(); i++) { // 3
if (str.charAt(i) == 'A') {
Collections.swap(list, 0, 1);
} else if (str.charAt(i) == 'B') {
Collections.swap(list, 1, 2);
} else {
Collections.swap(list, 0, 2);
}
}
System.out.println(list.indexOf('1') + 1); // 4
}
}
📌 풀이
- 어떻게 저장해야 할지 고민하다가 Collections 클래스 내부에 swap()이라는 메서드가 내포되어 있어서 쉽게 풀 수 있었다.
- swap() 메서드는 매개변수로 3가지 항목을 받는다. (적용하고자 하는 리스트, 해당 인덱스, 해당 인덱스)
- 문제 내용대로 시작할 때 맨 좌측에 기억하고자 List에 Character 타입의 숫자 1로 표현을 해주었다.
- 문자열을 입력하고, 문자열 길이만큼 반복한다.
- charAt(i)로 문자를 가져와 A, B, C를 각 각 비교하고 해당 문자와 동일하면 리스트 안에 숫자 위치를 바꾼다.
- 출력으로 indexOf 메서드를 활용하여 1이 있으면 해당 인덱스에 + 1을 하여 출력한다.
'Algorithm' 카테고리의 다른 글
[Java] 백준 2161 : 카드 1 (0) | 2022.06.28 |
---|---|
[Java] 백준 16466 : 콘서트 (0) | 2022.06.28 |
[Java] 백준 1032 : 명령 프롬프트 (0) | 2022.06.08 |
[Java] 백준 1157 : 단어 공부 (0) | 2022.06.04 |
[Java] 백준 11944 : NN (0) | 2022.04.01 |