Java/Java 알고리즘

백준 3028번 창영마을 JAVA 구현해보기

kimc 2022. 8. 28. 08:32

```

백준 3028번 창영마을 JAVA 구현해보기

```

이번 글을 통해 배워갈 내용

  1. 백준 3028번 자바 풀이

https://www.acmicpc.net/problem/3028

 

3028번: 창영마을

첫째 줄에 정인이가 컵을 섞은 순서가 주어진다. 이 순서는 A, B, C중 하나이고, 문제에 있는 그림을 참고하면 된다. 정인이는 컵을 최대 50번 섞는다.

www.acmicpc.net

백준 3028번 창영마을은

난이도 브론즈 등급의 문제로서

 

1 2 3의 위치에 공이 있을 수 있고

명령어 A 가 입력되면 1과 2의 위치 교환

명령어 B 가 입력되면 2와 3의 위치 교환

명령어 C 가 입력되면 3과 1의 위치 교환

하고

1에서 시작할 때

명령어들이 주어지면

최종적으로 공의 위치를 출력하면 됩니다.


30분 정도 위에 링크를 방문하셔서 풀어보시고

안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.


자바 13에서부터 지원되는 enhanced switch를 써서 간결하게 각 조건에 맞게 연산을 해주었고

stream에서 지원되는 reduce를 써서 최종 값을 연산했습니다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {
        // 입력
        final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        final String input = br.readLine();

        // 출력
        int result = input.chars().reduce(1, (a, b) -> {
            if (b == 'A') {
                switch (a) {
                    case 1 -> a = 2;
                    case 2 -> a = 1;
                    case 3 -> a = 3;
                }
            } else if (b == 'B') {
                switch (a) {
                    case 1 -> a = 1;
                    case 2 -> a = 3;
                    case 3 -> a = 2;
                }
            } else if (b == 'C') {
                switch (a) {
                    case 1 -> a = 3;
                    case 2 -> a = 2;
                    case 3 -> a = 1;
                }
            }
            return a;
        });

        System.out.print(result);
    }
}

// https://codemasterkimc.tistory.com

 

 

읽어주셔서 감사합니다

 

무엇인가 얻어가셨기를 바라며

 

오늘도 즐거운 코딩 하시길 바랍니다 ~ :)

 


 

728x90