๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ๋ฐœ/์ž๋ฃŒ๊ตฌ์กฐ & ์•Œ๊ณ ๋ฆฌ์ฆ˜

์‹ ๊ทœ ์•„์ด๋”” ์ถ”์ฒœ (Java)

by 1mj 2021. 10. 24.

https://programmers.co.kr/learn/courses/30/lessons/72410

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์‹ ๊ทœ ์•„์ด๋”” ์ถ”์ฒœ

์นด์นด์˜ค์— ์ž…์‚ฌํ•œ ์‹ ์ž… ๊ฐœ๋ฐœ์ž ๋„ค์˜ค๋Š” "์นด์นด์˜ค๊ณ„์ •๊ฐœ๋ฐœํŒ€"์— ๋ฐฐ์น˜๋˜์–ด, ์นด์นด์˜ค ์„œ๋น„์Šค์— ๊ฐ€์ž…ํ•˜๋Š” ์œ ์ €๋“ค์˜ ์•„์ด๋””๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—…๋ฌด๋ฅผ ๋‹ด๋‹นํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. "๋„ค์˜ค"์—๊ฒŒ ์ฃผ์–ด์ง„ ์ฒซ ์—…๋ฌด๋Š” ์ƒˆ๋กœ

programmers.co.kr

 

2021 KAKAO BLIND RECRUITMENT์—์„œ ์ถœ์ œ๋œ ๋ฌธ์ œ์ธ "์‹ ๊ทœ ์•„์ด๋”” ์ถ”์ฒœ" ๋ฌธ์ œ ํ’€์ด์ด๋‹ค.

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค๋ผ๋Š” ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ฌธ์ œ ํ’€์ด ํ”Œ๋žซํผ์—์„œ ์นด์นด์˜ค์—์„œ ์ถœ์ œ๋๋˜ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ฌธ์ œ๋“ค์„ ํ™•์ธํ•ด๋ณด๊ณ  ํ’€์–ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

์‚ฌ์‹ค ์ด ๋ฌธ์ œ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ƒ๊ฐํ•ด๋‚ด๋Š” ๋ถ€๋ถ„์€ ๊ฑฐ์˜ ์—†๋‹ค๊ณ  ํ•  ์ •๋„๋กœ ๋ฌธ์ œ์— ๋‚˜์™€์žˆ๋Š” ์„ค๋ช…์„ ๋”ฐ๋ฅด๋ฉด ๋˜๋Š” ๋ฌธ์ œ์˜€๋‹ค.

์ •๊ทœ์‹์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋˜์ง€๋งŒ, ์‚ฌ์šฉํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ„๋‹จํ•œ ํ’€์ด๊ฐ€ ๊ฐ€๋Šฅํ–ˆ๋‹ค.

 

import java.util.*;

class Solution {
    public String solution(String new_id) {
        String tempId = new_id;
        String regExp = "";
        
        // 1๋‹จ๊ณ„ new_id์˜ ๋ชจ๋“  ๋Œ€๋ฌธ์ž๋ฅผ ๋Œ€์‘๋˜๋Š” ์†Œ๋ฌธ์ž๋กœ ์น˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
        tempId = tempId.toLowerCase();
        
        // 2๋‹จ๊ณ„ new_id์—์„œ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž, ์ˆซ์ž, ๋นผ๊ธฐ(-), ๋ฐ‘์ค„(_), ๋งˆ์นจํ‘œ(.)๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
        regExp = "[^a-z0-9-_.]";
        tempId = tempId.replaceAll(regExp, "");
        
        // 3๋‹จ๊ณ„ new_id์—์„œ ๋งˆ์นจํ‘œ(.)๊ฐ€ 2๋ฒˆ ์ด์ƒ ์—ฐ์†๋œ ๋ถ€๋ถ„์„ ํ•˜๋‚˜์˜ ๋งˆ์นจํ‘œ(.)๋กœ ์น˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
        regExp = "\\.{2,}";
        tempId = tempId.replaceAll(regExp, ".");
        
        // 4๋‹จ๊ณ„ new_id์—์„œ ๋งˆ์นจํ‘œ(.)๊ฐ€ ์ฒ˜์Œ์ด๋‚˜ ๋์— ์œ„์น˜ํ•œ๋‹ค๋ฉด ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
        regExp = "^[.]|[.]$";
        tempId = tempId.replaceAll(regExp, "");
        
        // 5๋‹จ๊ณ„ new_id๊ฐ€ ๋นˆ ๋ฌธ์ž์—ด์ด๋ผ๋ฉด, new_id์— "a"๋ฅผ ๋Œ€์ž…ํ•ฉ๋‹ˆ๋‹ค.
        if (tempId.length() == 0) {
            tempId = "a";
        }
        
        // 6๋‹จ๊ณ„ new_id์˜ ๊ธธ์ด๊ฐ€ 16์ž ์ด์ƒ์ด๋ฉด, new_id์˜ ์ฒซ 15๊ฐœ์˜ ๋ฌธ์ž๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋ฌธ์ž๋“ค์„ ๋ชจ๋‘ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
        //      ๋งŒ์•ฝ ์ œ๊ฑฐ ํ›„ ๋งˆ์นจํ‘œ(.)๊ฐ€ new_id์˜ ๋์— ์œ„์น˜ํ•œ๋‹ค๋ฉด ๋์— ์œ„์น˜ํ•œ ๋งˆ์นจํ‘œ(.) ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
        if (tempId.length() >= 16) {
            tempId = tempId.substring(0, 15);
            if (tempId.charAt(tempId.length() - 1) == '.') {
                tempId = tempId.substring(0, tempId.length() - 1);
            }
        }
        
        // 7๋‹จ๊ณ„ new_id์˜ ๊ธธ์ด๊ฐ€ 2์ž ์ดํ•˜๋ผ๋ฉด, new_id์˜ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋ฅผ new_id์˜ ๊ธธ์ด๊ฐ€ 3์ด ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ด์„œ ๋์— ๋ถ™์ž…๋‹ˆ๋‹ค.
        if (tempId.length() <= 2) {
            int len = tempId.length();
            char lastChar = tempId.charAt(tempId.length() - 1);
            for (int i = 0; i < 3-len; i++) {
                tempId += lastChar;
            }
        }

        return tempId;
    }
}

 

 

๋Œ“๊ธ€