๐Ÿ‘ฉ๐Ÿป‍๐ŸŒพ

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/Java] ์‹ ๊ทœ ์•„์ด๋”” ์ถ”์ฒœ ๋ณธ๋ฌธ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/Java] ์‹ ๊ทœ ์•„์ด๋”” ์ถ”์ฒœ

์ฅฌ์Šค์ด 2024. 1. 23. 18:46
728x90
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

2021 KAKAO BLIND RECRUITMENT์—์„œ LV.1์œผ๋กœ ์ถœ์ œ๋œ ๋ฌธ์ œ์ด๊ณ , ์ •๊ทœํ‘œํ˜„์‹์„ ์ •๋ฆฌํ•˜๊ธฐ ์ข‹์€ ๋ฌธ์ œ ๊ฐ™์•„์„œ ํฌ์ŠคํŒ…ํ•˜๋ ค๊ณ  ํ•œ๋‹ค๐Ÿง

 

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป ์ „์ฒด ์ฝ”๋“œ๋Š” ์šฐ์„  ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

class Solution {
    public String solution(String new_id) {
        String answer = "";
        
        answer = new_id.toLowerCase();                  // 1๋‹จ๊ณ„
        answer = answer.replaceAll("[^a-z0-9-_.]", ""); // 2๋‹จ๊ณ„
        answer = answer.replaceAll("\\.{2,}", ".");     // 3๋‹จ๊ณ„
        answer = answer.replaceAll("^[.]|[.]$", "");    // 4๋‹จ๊ณ„

        // 5๋‹จ๊ณ„
        if (answer.equals(""))
            answer = "a";

        // 6-1๋‹จ๊ณ„
        if (answer.length() >= 16)
            answer = answer.substring(0, 15);

        // 6-2๋‹จ๊ณ„
        answer = answer.replaceAll("[.]$", "");

        // 7๋‹จ๊ณ„
        if (answer.length() <= 2) {
            char last = answer.charAt(answer.length() - 1);
            while (answer.length() < 3)
                answer += last;
        }
        return answer;
    }
}

์œ„ ์ฝ”๋“œ์—์„œ 5๋‹จ๊ณ„์™€ 6-1๋‹จ๊ณ„์— ํ•ด๋‹นํ•˜๋Š” ์ฝ”๋“œ๋Š” ์•„๋ž˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋กœ๋„ ํ‘œํ˜„๊ฐ€๋Šฅํ•˜๋‹คโœ…

answer = answer.equals("") ? "a" : answer;      // 5๋‹จ๊ณ„
answer = answer.length() >= 16 ? answer.substring(0, 15) : answer;   // 6-1๋‹จ๊ณ„

3, 4๋‹จ๊ณ„์—์„œ ์“ฐ์ธ ์ •๊ทœํ‘œํ˜„์‹์€ ์กฐ๊ธˆ ์ƒ์†Œํ•ด์„œ ํ•œ๋ฒˆ ๋ด๋ณด๋ฉด,

answer = answer.replaceAll("\\.{2,}", ".");     // 3๋‹จ๊ณ„
answer = answer.replaceAll("^[.]|[.]$", "");    // 4๋‹จ๊ณ„

 

3๋‹จ๊ณ„์—์„œ์˜ replaceAll() ํ•จ์ˆ˜์˜ ์ฒซ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋“ค์–ด๊ฐ„ "\\.{2, }"์€

ํŠน์ˆ˜๋ฌธ์ž ์•ž์— `\\`๋ฅผ ๋ถ™์—ฌ์ค˜์„œ `.`์ด ํŠน์ˆ˜๋ฌธ์ž์ž„์„ ์ธ์‹์‹œํ‚ค๊ณ , {2, }๋Š” 2๋ฒˆ ์ด์ƒ์˜ ๋ฐ˜๋ณต์ž„์„ ํ‘œํ˜„ํ•œ๋‹ค.

 

์ถ”๊ฐ€์ ์œผ๋กœ, ์ •๊ทœํ‘œํ˜„์‹์—์„œ

x{m, n}๋Š” x์˜ m๋ฒˆ ์ด์ƒ n๋ฒˆ ์ดํ•˜ ๋ฐ˜๋ณต

x{n, }๋Š” x์˜ n๋ฒˆ ์ด์ƒ ๋ฐ˜๋ณต

x{n}์€ x์˜ n๋ฒˆ ๋ฐ˜๋ณต ์„ ์˜๋ฏธํ•œ๋‹ค.

 

4๋‹จ๊ณ„์—์„œ์˜ replaceAll() ํ•จ์ˆ˜์˜ ์ฒซ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋“ค์–ด๊ฐ„ "^[.] | [.]$"์€

^[.]์€ ๋ฌธ์ž์—ด์ด `.`์œผ๋กœ ์‹œ์ž‘ํ•จ์„, [.]$๋Š” ๋ฌธ์ž์—ด์ด `.`์œผ๋กœ ๋๋‚จ์„ ํ‘œํ˜„ํ•œ๋‹ค.

๋‘ ์กฐ๊ฑด ์‚ฌ์ด์— `|`๋Š” OR์˜ ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

 

728x90
Comments