신뇽이 되어보자

[JAVA] 1343번 폴리오미노 본문

CodingTest

[JAVA] 1343번 폴리오미노

신뇽이되고싶은미뇽 2024. 11. 1. 13:30
728x90

구분 : 그리디

 

public class Main {

    //1343번 폴리오미노

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        String str = br.readLine();

        String[] arr = str.split("\\.");
        int strlen = str.length();

        for (int i = 0; i < arr.length; i++) {

            String x = arr[i];
            int length = x.length();


            if (length % 2 != 0) {
                System.out.println("-1");
                return;
            }

            while (length >= 4) {
                sb.append("AAAA");
                length -= 4;
                strlen-=4;
            }
            while (length >= 2) {
                sb.append("BB");
                length -= 2;
                strlen-=2;
            }

            if (i != arr.length - 1) {
                sb.append(".");
                strlen-=1;
            }
        }
        for(int i =0; i < strlen;i++){
            sb.append(".");
        }

        System.out.println(sb);
    }
}

 

반례가 있었다

예제 입력

.XXXXXX. 

 

나와야하는 출력

.AAAABB.

 

내 답

.AAAABB

 

마지막 . 을 처리안해줘서 틀렸다.

 

해결방법은 문자열 길이를 변수에 저장한 다음( strlen)

X를AAAA와 BB로 치환할 때 

AAAA일땐 4를 빼주고 BB일땐 2를 빼줬다.

 

모든 치환이 끝나면

남은 길이만큼 . 을 붙인다.

 

 

 

 

728x90

'CodingTest' 카테고리의 다른 글

[Algorithm] 순열, 중복 순열, 조합, 중복 조합  (0) 2025.02.05
[JAVA] 2217번 로프  (0) 2024.11.01
[JAVA] 13023번 ABCDE  (0) 2024.10.31
[JAVA] 13549번 숨바꼭질3  (0) 2024.10.31
[JAVA] 14916번 거스름돈  (0) 2024.10.30