Dev-Kyuu
article thumbnail

- ๋ฌธ์ œ :

  • ์•„์ด๋””๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์•„์ด๋”” ๊ทœ์น™์— ๋งž์ง€ ์•Š๋Š” ์•„์ด๋””๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ž…๋ ฅ๋œ ์•„์ด๋””์™€ ์œ ์‚ฌํ•˜๋ฉด์„œ ๊ทœ์น™์— ๋งž๋Š” ์•„์ด๋””๋ฅผ ์ถ”์ฒœํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑํ•˜๊ธฐ
package org.example;

public class proPrac24 {
    public String solution(String new_id) {
        String answer = "";

        System.out.println("1๋‹จ๊ณ„ ์‹œ์ž‘");
        String new_id_1 = new_id.toLowerCase();
        // 1๋‹จ๊ณ„๋Š” new_id์˜ ๋ชจ๋“  ๋Œ€๋ฌธ์ž๋ฅผ ๋Œ€์‘๋˜๋Š” ์†Œ๋ฌธ์ž๋กœ ์น˜ํ™˜ํ•œ๋‹ค.
        // toLowerCase ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•„์ด๋””์— ์žˆ๋Š” ๋ชจ๋“  ๋Œ€๋ฌธ์ž๋ฅผ ์†Œ๋ฌธ์ž๋กœ ๋ฐ”๊พผ๋‹ค

        System.out.println("2๋‹จ๊ณ„ ์‹œ์ž‘");
        String new_id_2 = new_id_1.replaceAll("[^a-z0-9_.-]", "");
        // 2๋‹จ๊ณ„๋Š” new_id์—์„œ ์†Œ๋ฌธ์ž, ์ˆซ์ž, ๋นผ๊ธฐ, ๋ฐ‘์ค„, ๋งˆ์นจํ‘œ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.
        // replaceAllํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด์„œ ์ •๊ทœ์‹ ๋ฌธ์ž์— ํฌํ•จ๋˜๋Š” ํ˜•์‹์ด ์•„๋‹๊ฒฝ์šฐ ""๋กœ ๋ณ€๊ฒฝ(=์ œ๊ฑฐ)

        System.out.println("3๋‹จ๊ณ„ ์‹œ์ž‘");
        String new_id_3 = new_id_2.replaceAll("[.]+", ".");
        // 3๋‹จ๊ณ„๋Š” ๋งˆ์นจํ‘œ(.)๊ฐ€ 2๋ฒˆ ์ด์ƒ ์—ฐ์†๋œ ๋ถ€๋ถ„์„ ํ•˜๋‚˜์˜ ๋งˆ์นจํ‘œ(.)๋กœ ์น˜ํ™˜ํ•œ๋‹ค.
        // 2๋‹จ๊ณ„์™€ ๋™์ผํ•˜๊ฒŒ replaceAllํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด [.]+ ํ•œ๊ฐœ ๋งˆ์นจํ‘œ ์ด์ƒ์ผ๊ฒฝ์šฐ "."๋กœ ์น˜ํ™˜ํ•œ๋‹ค.

        System.out.println("4๋‹จ๊ณ„ ์‹œ์ž‘");
        // 4๋‹จ๊ณ„๋Š” ๋งˆ์นจํ‘œ๊ฐ€ ์ฒ˜์Œ์ด๋‚˜, ๋์— ์œ„์น˜ํ•  ๊ฒฝ์šฐ ์ œ๊ฑฐํ•œ๋‹ค
        String new_id_4 = new_id_3;
        if (new_id_4.endsWith(".")) {
            // endsWithํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋งˆ์ง€๋ง‰ ๋ฌธ์ž์— "."๊ฐ€ ํฌํ•จ ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
            // ํฌํ•จ๋˜์–ด์žˆ์œผ๋ฉด true, ์•„๋‹ˆ๋ฉด False๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
            new_id_4 = new_id_4.substring(0, new_id_4.length() - 1);
            // ํฌํ•จ๋˜์–ด ์žˆ์„ ๊ฒฝ์šฐ substring ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด 0๋ฒˆ์งธ๋ถ€ํ„ฐ new_id_4์˜ ๊ธธ์ด -1 ํ•œ๋งŒํผ(=๋งˆ์ง€๋ง‰ ๋ฌธ์ž ์ œ์™ธ)๋งŒ ๋ฌธ์ž์—ด์— ์ €์žฅํ•œ๋‹ค.
        }
        if (new_id_4.startsWith(".")) {
            // endsWithํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ฒซ๋ฒˆ์งธ  ๋ฌธ์ž์— "."๊ฐ€ ํฌํ•จ ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
            // ํฌํ•จ๋˜์–ด์žˆ์œผ๋ฉด true, ์•„๋‹ˆ๋ฉด False๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
            new_id_4 = new_id_4.substring(1);
            // ์ฒซ๋ฒˆ์งธ ๊ธ€์ž์— "."๊ฐ€ ํฌํ•จ๋˜์–ด์žˆ์œผ๋ฉด 1๋ฒˆ์จฐ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰๊นŒ์ง€ ์ €์žฅํ•œ๋‹ค.
        }
        
        System.out.println("5๋‹จ๊ณ„ ์‹œ์ž‘");
        // 5๋ฒˆ์งธ๋Š” new_id๊ฐ€ ๋นˆ ๋ฌธ์ž์—ด์ด๋ฉด a๋ฅผ ๋Œ€์ž…ํ•œ๋‹ค.
        String new_id_5 = new_id_4;
        if (new_id_5.length() < 1) {
            // new_id_5์˜ ๊ธธ์ด๊ฐ€ 1๋ณด๋‹ค ์ž‘๋‹ค๋ฉด(=๋นˆ ๋ฌธ์ž์—ด์ด๋ผ๋ฉด)
            new_id_5 += "a";
            // ๋ฌธ์ž์—ด์— a๋ฅผ ์ €์žฅํ•œ๋‹ค.
        }

        System.out.println("6๋‹จ๊ณ„ ์‹œ์ž‘");
        // 6๋ฒˆ์งธ๋Š” new_id์˜ ๊ธธ์ด๊ฐ€ 16์ž ์ด์ƒ์ด๋ฉด, ์ฒซ๋ฒˆ์งธ๋ถ€ํ„ฐ 15๋ฒˆ์งธ๊นŒ์ง€๋งŒ ์ถœ๋ ฅํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ์ œ์™ธํ•œ๋‹ค.
        // 16๋ฒˆ์งธ ์ดํ›„๋ฅผ ์ œ๊ฑฐ ํ•œ ํ›„ ๋งˆ์นจํ‘œ(.)๊ฐ€ ๋์— ์œ„์น˜ํ•˜๋ฉด ๋งˆ์นจํ‘œ๊นŒ์ง€ ์ œ๊ฑฐํ•œ๋‹ค.
        String new_id_6 = new_id_5;
        if (new_id_5.length() >= 16) {
            // ๋งŒ์•ฝ์— new_id_5์˜ ๊ธธ์ด๊ฐ€ 16๋ณด๋‹ค ํฌ๋‹ค๋ฉด
            new_id_6 = new_id_5.substring(0, 15);
            // substring ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด 0๋ฒˆ์จฐ๋ถ€ํ„ฐ 15๋ฒˆ์งธ๊นŒ์ง€๋งŒ ์ €์žฅํ•œ๋‹ค.
        }
        if (new_id_6.endsWith(".")) {
            // ์œ„์—์„œ ์‚ฌ์šฉํ•œ endsWith๋กœ ๋์— "."์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ 
            new_id_6 = new_id_6.substring(0, new_id_6.length() - 1);
            // "."์ด ์žˆ๋‹ค๋ฉด, new_id_6์—์„œ ๊ธธ์ด -1 ํ•œ๋งŒํผ๊นŒ์ง€๋งŒ ์ถœ๋ ฅํ•œ๋‹ค(. ๋นผ๊ณ  ์ถœ๋ ฅ)
        }
        
        System.out.println("7๋‹จ๊ณ„ ์‹œ์ž‘");
        // 7๋‹จ๊ณ„๋Š” new_id์˜ ๊ธธ์ด๊ฐ€ 2์ž ์ดํ•˜๋ฉด, ๊ธธ์ด๊ฐ€ 3์ž๊ฐ€ ๋ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ด์„œ ๋์— ๋ถ™ํžŒ๋‹ค.
        String new_id_7 = new_id_6;
        if (new_id_7.length() <= 2) {
            // new_id_7์˜ ๊ธธ์ด๊ฐ€ 2๋ณด๋‹ค ์ž‘์œผ๋ฉด
            char last = new_id_7.charAt(new_id_7.length() - 1);
            // new_id_7 ๋ฌธ์ž์—ด์— ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋ฅผ ์ €์žฅํ•ด์„œ
            while (new_id_7.length() < 3) {
                // New_id_7์˜ ๊ธธ์ด๊ฐ€ 3์ด ๋ ๋–„๊นŒ์ง€
                new_id_7 += last;
                // last(๋งˆ์ง€๋ง‰๋ฌธ์ž)๋ฅผ new_id_7์— ๋„ฃ๋Š”๋‹ค
            }
        }return new_id_7;
    }

        public static void main (String[]args){
            proPrac24 newId = new proPrac24();
            System.out.println(newId.solution("...!@BaT#*..y.abcdefghijklm"));
            System.out.println(newId.solution("z-+.^."));
            System.out.println(newId.solution("=.="));
            System.out.println(newId.solution("=.="));
            System.out.println(newId.solution("123_.def"));
            System.out.println(newId.solution("abcdefghijklmn.p"));

        }
    }

- ํ’€์ด :

  • ์ด๋ฒˆ ๋ฌธ์ œ๋Š” ๋‹จ๊ณ„๋ณ„๋กœ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ์ผ๋“ค์ด ์ •ํ•ด์ ธ์žˆ์–ด์„œ ๋ฉ”๋ชจ์žฅ์— ์–ด๋–ป๊ฒŒ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์งค๊ฒƒ์ธ์ง€ ์ž‘์„ฑํ–ˆ๋‹ค.

  • ์–ด๋ ค์› ์ง€๋งŒ ๋˜ ํ•ด๋‚ด๋ฒ„๋ ธ๋‹ค ๐Ÿ˜Ž
profile

Dev-Kyuu

@kyuu_ng

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!