ํ•ด๋ฒ„๋‹ˆ 2023. 11. 10. 16:01
๋ฐ˜์‘ํ˜•

 

 

 

๋ฌธ์ œ

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

 

1343๋ฒˆ: ํด๋ฆฌ์˜ค๋ฏธ๋…ธ

์ฒซ์งธ ์ค„์— ์‚ฌ์ „์ˆœ์œผ๋กœ ๊ฐ€์žฅ ์•ž์„œ๋Š” ๋‹ต์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ๋ฎ์„ ์ˆ˜ ์—†์œผ๋ฉด -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net

 

 

 

 

์˜คํ™.. ์ด๊ฒŒ ํด๋ฆฌ์˜ค๋ฏธ๋…ธ๊ตฌ๋‚˜..

๊ทธ๋ƒฅ ํผ์ฆ,, ๋ธ”๋Ÿญ๋งž์ถ”๊ธฐ ๋ผ๊ณ ๋งŒ ์•Œ๊ณ ์žˆ์—ˆ๋‹ค. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ํ’€์ด

 

์ฒ˜์Œ์—๋Š” .์„ ๊ธฐ์ค€์œผ๋กœ split์„ ํ•ด์ฃผ์—ˆ์ง€๋งŒ .X...๊ณผ ๊ฐ™์ด ๋’ค์— ์ ์ด ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ์žˆ๋Š” ์˜ˆ์ œ๋Š” ๋‹ค ํ‹€๋ฆฌ๊ฒŒ ์ถœ๋ ฅ๋˜์—ˆ๋‹ค.

๊ทธ๋ž˜์„œ split์„ ํ•˜์ง€ ์•Š๊ณ , charAt์œผ๋กœ .์ด ๋‚˜์˜ค๊ธฐ ์ „๊นŒ์ง€๋งŒ ๋ฐ›์•„์ฃผ๊ณ  ๊ฒ€์‚ฌํ•˜๋Š” ๋กœ์ง์„ ์งฐ๋‹ค. 

 

package algorithm;

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

public class Main {
    public String change(String text) {
        String answer = "";

        int length = text.length();
        if (length % 2 == 1) { // ๋งŒ์•ฝ ์ž๋ฅธ ๋ถ€๋ถ„๋“ค์ด ํ™€์ˆ˜๋ผ๋ฉด -1 ๋ฐ˜ํ™˜
            return "-1";
        }

        while (length > 0) {
            if (length % 4 == 0 || ((length - 2) % 4 == 0 && (length - 2) > 0)) { // AAAA๋ถ€ํ„ฐ ๋จผ์ € ์ฑ„์›Œ์ฃผ๊ธฐ
                answer += "AAAA";
                length -= 4;

            } else if (length % 2 == 0) { // ๊ทธ ๋‹ค์Œ์— BB ์ฑ„์›Œ์ฃผ๊ธฐ
                answer += "BB";
                length -= 2;
            }
        }

        return answer;
    }

    public String polyomino(String input) {
        String[] arr = input.split("\\.");
        // .์€ ์ •๊ทœ ํ‘œํ˜„์‹์—์„œ ์–ด๋– ํ•œ ๋ฌธ์ž์™€๋„ ๋งค์นญ๋˜๋Š” ์™€์ผ๋“œ์นด๋“œ ๋ฌธ์ž๋กœ ๊ฐ„์ฃผ๋˜๊ธฐ ๋•Œ๋ฌธ์— \\.์œผ๋กœ ์จ์ฃผ๋ฉด์„œ .์„ ๊ธฐ์ค€์œผ๋กœ ์ž๋ฅธ๋‹ค.
        String answer = "";

        int index = 0;
        int flag = 0;
        String text = "";
        String changeText = "";
        
        while (index < input.length()) {
            if (input.charAt(index) == '.') {
                if (text.length() > 0) {
                    changeText = change(text);
                    if (changeText.equals("-1")) {
                        flag = 1;
                    }
                    answer += change(text);
                }

                text = "";
                answer += ".";
            } else {
                text += String.valueOf(input.charAt(index));
            }

            index++;
        }

        if (text.length() > 0) {
            changeText = change(text);
            if(changeText.equals("-1")) {
                flag = 1; 
            }
            answer += change(text);
        }

        return flag == 0 ? answer : "-1";
    }



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

        String input = br.readLine();
        Main m = new Main();
        String answer = m.polyomino(input);

        System.out.println(answer);
    }
}

 

 

 

 

 

 

 

 

 

 

 

์ •๋‹ต 

 

 

 

 

 

 

๋ฐ˜์‘ํ˜•