๐ŸŒท๐ŸŒผ๋ชจ์—ฌ๋ด์š” ๊ฐœ๋ฐœ์˜์ˆฒ๐ŸŒท๐ŸŒผ

[JAVA/์ฝ”๋”ฉํ…Œ์ŠคํŠธ] ์‹ ๊ทœ ์•„์ด๋”” ์ถ”์ฒœ (2021 KAKAO BLIND RECRUITMNET) ๋ณธ๋ฌธ

๊ฐœ๋ฐœ/์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ’€์ด JAVA

[JAVA/์ฝ”๋”ฉํ…Œ์ŠคํŠธ] ์‹ ๊ทœ ์•„์ด๋”” ์ถ”์ฒœ (2021 KAKAO BLIND RECRUITMNET)

์š”์ผ์ด 2022. 8. 15. 21:10
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

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

 

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

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

programmers.co.kr

 

์ฒซ๋ฒˆ์งธ ์‹œ๋„

import java.util.*;

class Solution {

    public String solution(String new_id) {
        String answer = "";
        String answerTmp = "";
        // 1. new_id์˜ ๋ชจ๋“  ๋Œ€๋ฌธ์ž๋ฅผ ๋Œ€์‘๋˜๋Š” ์†Œ๋ฌธ์ž๋กœ ์น˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
        new_id = new_id.toLowerCase(Locale.ROOT);

        // 2. new_id์—์„œ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž, ์ˆซ์ž, ๋นผ๊ธฐ(-), ๋ฐ‘์ค„(_), ๋งˆ์นจํ‘œ(.)๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
        for(char x : new_id.toCharArray()){
            if(Character.isLowerCase(x) || x == '-' || x == '_' || x == '.' || (x >= 48 && x <=57)){
                answer += x;
            }
        }

        // 3. new_id์—์„œ ๋งˆ์นจํ‘œ(.)๊ฐ€ 2๋ฒˆ ์ด์ƒ ์—ฐ์†๋œ ๋ถ€๋ถ„์„ ํ•˜๋‚˜์˜ ๋งˆ์นจํ‘œ(.)๋กœ ์น˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
        for(int i=0; i<answer.length();){
            if(answer.charAt(i) == '.'){
                if(i+1 < answer.length()){
                    for(int j=i+1; j<answer.length(); j++){
                        if(answer.charAt(j) == '.'){
                            i++;
                        }else{
                            answerTmp = answerTmp + ".";
                            i++;
                            break;
                        }
                    }
                }else{
                    answerTmp = answerTmp + ".";
                    i++;
                }
            }else{
                answerTmp += answer.charAt(i);
                i++;
            }
        }

        // 4. new_id์—์„œ ๋งˆ์นจํ‘œ(.)๊ฐ€ ์ฒ˜์Œ์ด๋‚˜ ๋์— ์œ„์น˜ํ•œ๋‹ค๋ฉด ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
        if(answerTmp.charAt(0) == '.'){
            answer = answerTmp.substring(1, answerTmp.length());
        }
        if(answerTmp.charAt(answerTmp.length()-1) == '.'){
            answer = answer.substring(0,answerTmp.length()-1);
        }

        // 5. new_id๊ฐ€ ๋นˆ ๋ฌธ์ž์—ด์ด๋ผ๋ฉด, new_id์— "a"๋ฅผ ๋Œ€์ž…ํ•ฉ๋‹ˆ๋‹ค.
        if(answer.isBlank()){
            answer = "a";
        }

        // 6. new_id์˜ ๊ธธ์ด๊ฐ€ 16์ž ์ด์ƒ์ด๋ฉด, new_id์˜ ์ฒซ 15๊ฐœ์˜ ๋ฌธ์ž๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋ฌธ์ž๋“ค์„ ๋ชจ๋‘ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ œ๊ฑฐ ํ›„ ๋งˆ์นจํ‘œ(.)๊ฐ€ new_id์˜ ๋์— ์œ„์น˜ํ•œ๋‹ค๋ฉด ๋์— ์œ„์น˜ํ•œ ๋งˆ์นจํ‘œ(.) ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
        if(answer.length() >= 16){
            answer = answer.substring(0, 15);
            if(answer.charAt(answer.length()-1) == '.'){
                answer = answer.substring(0,answer.length()-1);
            }
        }


        // 7. new_id์˜ ๊ธธ์ด๊ฐ€ 2์ž ์ดํ•˜๋ผ๋ฉด, new_id์˜ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋ฅผ new_id์˜ ๊ธธ์ด๊ฐ€ 3์ด ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ด์„œ ๋์— ๋ถ™์ž…๋‹ˆ๋‹ค.
        while(answer.length()<3) {
            answer += answer.charAt(answer.length()-1);
        }

        return answer;
    }

}

 


๊ณ ์นœ ๋ถ€๋ถ„ ํ’€์ด

- ์ฝ”๋“œ ์‹คํ–‰์‹œ ๋‹ค ํ†ต๊ณผ๋˜์—ˆ์ง€๋งŒ ์ œ์ถœํ•˜์—ฌ ์ฑ„์ฒจํ•˜๋‹ˆ ๋ช‡ ๋ถ€๋ถ„์—์„œ ์‹คํŒจ๊ฐ€ ๋– ์„œ ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์ˆ˜์ •ํ•ด๋ณด์•˜๋‹ค.

3. new_id์—์„œ ๋งˆ์นจํ‘œ(.)๊ฐ€ 2๋ฒˆ ์ด์ƒ ์—ฐ์†๋œ ๋ถ€๋ถ„์„ ํ•˜๋‚˜์˜ ๋งˆ์นจํ‘œ(.)๋กœ ์น˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
์—์„œ ๊นŠ๊ฒŒ ์ƒ๊ฐํ–ˆ๋˜๊ฒƒ ๊ฐ™๋‹ค.
for๋ฌธ์„ ๋‘๋ฒˆ ๋Œ๋ฆฌ์ง€ ์•Š์•„๋„ replace๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ".."๋ฅผ ์ฐพ์•„ "."๋กœ ๋ณ€ํ™˜ํ•ด ์ฃผ์–ด ์ข€ ๋” ์†๋„๋ฅผ ๋†’์˜€๋‹ค.

๊ทธ๋žฌ๋”๋‹ˆ indexOf์—๋Ÿฌ๊ฐ€ ๋œจ๋Š” ๊ฒƒ์ด์˜€๋‹ค.

๋””๋ฒ„๊น… ํ•ด๋ณด๋‹ˆ 
 // 4. new_id์—์„œ ๋งˆ์นจํ‘œ(.)๊ฐ€ ์ฒ˜์Œ์ด๋‚˜ ๋์— ์œ„์น˜ํ•œ๋‹ค๋ฉด ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
if(answerTmp.charAt(0) == '.'){
answer = answerTmp.substring(1, answerTmp.length());
}
if(answerTmp.charAt(answerTmp.length()-1) == '.'){
answer = answer.substring(0,answerTmp.length()-1);
}

์ด ๋ถ€๋ถ„์—์„œ ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š” ๊ฒƒ์ด์˜€๋Š”๋ฐ
๋งŒ์•ฝ new_id๊ฐ€ "." ์ธ ์ƒํƒœ๋กœ ๋งˆ์นจํ‘œ๋ฅผ ์—†์• ์„œ answer์— ๋„ฃ๋Š”๋‹ค๋ฉด  answer.charAt(answer.length()-1)์—์„œ ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค.
๊ทธ๋ž˜์„œ  if(answer.length() > 0) ๋ฅผ ์ถ”๊ฐ€ํ•˜์˜€๋‹ค.

 

 

 

๋งž์ถ˜ ํ’€์ด

import java.util.*;

class Solution {
   public String solution(String new_id) {

        String answer = "";

        // 1. new_id์˜ ๋ชจ๋“  ๋Œ€๋ฌธ์ž๋ฅผ ๋Œ€์‘๋˜๋Š” ์†Œ๋ฌธ์ž๋กœ ์น˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
        new_id = new_id.toLowerCase();

        // 2. new_id์—์„œ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž, ์ˆซ์ž, ๋นผ๊ธฐ(-), ๋ฐ‘์ค„(_), ๋งˆ์นจํ‘œ(.)๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
        for(char x : new_id.toCharArray()){
            if(Character.isLowerCase(x) || x == '-' || x == '_' || x == '.' || (x >= 48 && x <=57)){
                answer += x;
            }
        }

        // 3. new_id์—์„œ ๋งˆ์นจํ‘œ(.)๊ฐ€ 2๋ฒˆ ์ด์ƒ ์—ฐ์†๋œ ๋ถ€๋ถ„์„ ํ•˜๋‚˜์˜ ๋งˆ์นจํ‘œ(.)๋กœ ์น˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
        answer = answer.replace("..", ".");
        while (answer.contains("..")) {
            answer = answer.replace("..", ".");
        }

        // 4. new_id์—์„œ ๋งˆ์นจํ‘œ(.)๊ฐ€ ์ฒ˜์Œ์ด๋‚˜ ๋์— ์œ„์น˜ํ•œ๋‹ค๋ฉด ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
        if(answer.length() > 0){
            if(answer.charAt(0) == '.'){
                answer = answer.substring(1);
            }
        }

        if(answer.length() > 0) {
            if (answer.charAt(answer.length() - 1) == '.') {
                answer = answer.substring(0, answer.length() - 1);
            }
        }
        
        // 5. new_id๊ฐ€ ๋นˆ ๋ฌธ์ž์—ด์ด๋ผ๋ฉด, new_id์— "a"๋ฅผ ๋Œ€์ž…ํ•ฉ๋‹ˆ๋‹ค.
        if(answer.isBlank()){
            answer = "a";
        }

        // 6. new_id์˜ ๊ธธ์ด๊ฐ€ 16์ž ์ด์ƒ์ด๋ฉด, new_id์˜ ์ฒซ 15๊ฐœ์˜ ๋ฌธ์ž๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋ฌธ์ž๋“ค์„ ๋ชจ๋‘ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ œ๊ฑฐ ํ›„ ๋งˆ์นจํ‘œ(.)๊ฐ€ new_id์˜ ๋์— ์œ„์น˜ํ•œ๋‹ค๋ฉด ๋์— ์œ„์น˜ํ•œ ๋งˆ์นจํ‘œ(.) ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
        if(answer.length() >= 16){
            answer = answer.substring(0, 15);
            if(answer.charAt(answer.length()-1) == '.'){
                answer = answer.substring(0,answer.length()-1);
            }
        }


        // 7. new_id์˜ ๊ธธ์ด๊ฐ€ 2์ž ์ดํ•˜๋ผ๋ฉด, new_id์˜ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋ฅผ new_id์˜ ๊ธธ์ด๊ฐ€ 3์ด ๋  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ด์„œ ๋์— ๋ถ™์ž…๋‹ˆ๋‹ค.
        while(answer.length()<3) {
            answer += answer.charAt(answer.length()-1);
        }

        return answer;
    }
}
Comments