잡다한 배똥월드

728x90
코딩 테스트 풀이 체크리스트
 

코딩테스트 연습 - 신규 아이디 추천

카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로

programmers.co.kr

 

 

 

 

 

import java.util.*;

class Solution {
    public String solution(String new_id) {
        String arr = "1234567890abcdefghijklmnopqrstuvwxyz._-";
        
        String answer = new_id.toLowerCase(); //1단계
        
        //2단계
        String[] temp = answer.split("");
        
        for (int i = 0; i < temp.length; i++) {
            if (arr.indexOf(temp[i]) == -1) {
                temp[i] = "";
            }
        }
        
        answer = String.join("", temp);
        
        //3단계
        while (answer.indexOf("..") != -1) {
            answer = answer.replace("..", ".");
        }
        
        //4단계
        if (answer.indexOf(".") == 0) answer = answer.substring(1, answer.length());
        if (answer.length() != 0 && answer.lastIndexOf(".") == answer.length()-1) answer = answer.substring(0, answer.length()-1);
        
        //5단계
        if (answer.length() == 0) {
            answer = "a";
        }
        
        //6단계
        answer = (answer.length() >= 16) ? answer.substring(0, 15) : answer;
        if (answer.length() != 0 && answer.lastIndexOf(".") == answer.length()-1) answer = answer.substring(0, answer.length()-1);
        
        //7단계
        if (answer.length() <= 2) {
            int l = answer.length();
            temp = new String[3 - l];
            Arrays.fill(temp, answer.substring(l-1, l));
            
            answer += String.join("", temp);
        }
        
        return answer;
    }
}

 

테스트 1 통과 (0.24ms, 72.6MB)
테스트 2 통과 (1.31ms, 75.3MB)
테스트 3 통과 (1.33ms, 75.5MB)
테스트 4 통과 (0.20ms, 71.2MB)
테스트 5 통과 (0.28ms, 70.5MB)
테스트 6 통과 (0.19ms, 72.5MB)
테스트 7 통과 (0.19ms, 72MB)
테스트 8 통과 (0.32ms, 73.7MB)
테스트 9 통과 (1.78ms, 77.5MB)
테스트 10 통과 (0.16ms, 73.6MB)
테스트 11 통과 (0.21ms, 77.6MB)
테스트 12 통과 (0.34ms, 71.4MB)
테스트 13 통과 (1.51ms, 84MB)
테스트 14 통과 (0.22ms, 75.4MB)
테스트 15 통과 (0.29ms, 73.6MB)
테스트 16 통과 (0.61ms, 78.3MB)
테스트 17 통과 (1.57ms, 77.1MB)
테스트 18 통과 (2.89ms, 87.8MB)
테스트 19 통과 (2.75ms, 73MB)
테스트 20 통과 (2.81ms, 70MB)
테스트 21 통과 (3.40ms, 74.2MB)
테스트 22 통과 (3.95ms, 71.8MB)
테스트 23 통과 (3.92ms, 72.6MB)
테스트 24 통과 (2.62ms, 70.2MB)
테스트 25 통과 (2.84ms, 74.5MB)
테스트 26 통과 (3.41ms, 74.2MB)

 

 

 

 

 

1단계부터 7단계까지 순서대로 코드를 짠 것 뿐이라서 설명이 없다...

 

 

 

 

더보기

 

 

 

이건 이전에 풀었을 때 작성했던 코드인데 이 때 코드도 나쁘지 않은 듯...

 

 

 

 

import java.util.*;

class Solution {
    public String solution(String new_id) {
        String answer = "";
        
        String[] id = new_id.toLowerCase().split("");

        ArrayList<String> data = new ArrayList<>();
        
        for (int i = 0; i < id.length; i++){
            
            char c = id[i].charAt(0);
            //46 : "."을 의미
            if (data.size() == 0 && c == '.'){
                continue;
            }
            
            //46 : ".", 45 : "-", 95 : "_"
            if (c != 46 && c != 45 && c != 95 && !((c >= 97 && c <= 122) || (c >= 48 && c <= 57))){
                continue;
            }
            
            if (c == 46 && data.get(data.size() - 1).equals(".")){
                continue;
            }
            
            if (data.size() > 14){
                break;
            }
            
            data.add(id[i]);
        }
    
        if (data.size() > 0 && data.get(data.size() - 1).equals(".")){
            data.remove(data.size() - 1);
        }
        
        if (data.size() == 0){
            data.add("a");
        }
        
        if (data.size() < 3){
            while (data.size() < 3){
                data.add(data.get(data.size() - 1));
            }
        }
        
        return String.join("", data);
    }
}

 

테스트 1 통과 (0.23ms, 52MB)
테스트 2 통과 (0.23ms, 54MB)
테스트 3 통과 (0.25ms, 52.3MB)
테스트 4 통과 (0.27ms, 53.7MB)
테스트 5 통과 (0.27ms, 52.1MB)
테스트 6 통과 (0.29ms, 52.7MB)
테스트 7 통과 (0.37ms, 53MB)
테스트 8 통과 (0.29ms, 51.9MB)
테스트 9 통과 (0.13ms, 75MB)
테스트 10 통과 (0.25ms, 54.5MB)
테스트 11 통과 (0.33ms, 52.6MB)
테스트 12 통과 (0.43ms, 52.5MB)
테스트 13 통과 (0.24ms, 52.3MB)
테스트 14 통과 (0.39ms, 52.8MB)
테스트 15 통과 (0.35ms, 53.7MB)
테스트 16 통과 (0.74ms, 53.1MB)
테스트 17 통과 (1.05ms, 52.3MB)
테스트 18 통과 (2.38ms, 52.3MB)
테스트 19 통과 (2.11ms, 52.1MB)
테스트 20 통과 (2.56ms, 52.8MB)
테스트 21 통과 (2.29ms, 51.9MB)
테스트 22 통과 (2.28ms, 51.8MB)
테스트 23 통과 (2.51ms, 52.4MB)
테스트 24 통과 (3.02ms, 52.6MB)
테스트 25 통과 (3.87ms, 53MB)
테스트 26 통과 (2.08ms, 53.8MB)

 

 

728x90

+ Recent posts