[Programmers]推奨新規ID(Java)


1. Problem 📃




[ジルコニアルールジルコニア]



2. Constraint 🔗



3. Solution 🔑


私が問題を解く方法はアルゴリズムの概念をそのまま運ぶことです.
一つ一つゆっくりと解きほぐす.
Javaコードの実力を試験するためにはあまり向上していないので、今から見ればこの方法が一番いいと思いますが、先にメモしておきます.
  • Scannerクラス入力ID
  • を使用
  • で与えられたルールに従って、1段階~7段階を処理する.
  • 4. Code 💻

    import java.util.ArrayList;
    import java.util.List;
    
    class Solution {
    	public String solution(String new_id) {
    		String answer = "";
    		char word[] = new char[new_id.length()];
    
    		
    			// 1단계 : 소문자로 변경
    			new_id = new_id.toLowerCase();
    			word = new_id.toCharArray();
    
    			ArrayList<String> list = new ArrayList<String>();
    
    			for (char i : word) {
    				list.add(i + "");
    			}
    			
    			
    			// 2단계 : 소문자, 숫자(0~9), '-', '_', '.' 이면
    			for (int i = 0; i < list.size(); i++) {
    				char temp = (char) (list.get(i).charAt(0));
    				if ((temp >= 'a' && temp <= 'z') || (temp >='0' && temp <='9') || (temp == '-' || temp == '_' || temp == '.')) {
    					continue;
    				}
    				else {
    					list.remove(i);	
    					i--;
    				}
    			}
    			
    			
    			
    			// 3단계 : 마침표(.)가 두개 이상이면 .하나로 변경.
    			for (int i=0; i<list.size()-1; i++) {
    				char temp = (char) (list.get(i).charAt(0));
    				if (temp == '.' && list.get(i + 1).charAt(0) == '.') {
    					list.remove(i);
    					i--;
    				}
    			}
    			
    			
    			
    			// 4단계 : 마침표(.)가 맨 앞이나 뒤에 있을 때 삭제.
    			if (list.get(0).charAt(0) == '.') {
    				list.remove(0);
    			}
    			else if (list.get(list.size() - 1).charAt(0) == '.') {
    				list.remove(list.size() - 1);
    			}
    				
    	
    			
    			// 5단계 : 삭제하고 글자가 빈문자열이면 a 추가 
    			if (list.size()== 0) {
    				list.add("a");
    			}
    			
    			
    			
    			// 6단계 : 글자 길이가 15글자를 초과하면
    			if (list.size() > 15) { 
    				for (int i = 15; i < list.size(); i++) {
    					list.remove(i); 
    					i--;
    				}
    			}
    				//제거 후 마지막 글자가 '.' 이라면 삭제.
    			if (list.get(list.size() - 1).charAt(0) == '.') { //
    				list.remove(list.size()-1);
    			}
    			
    			// 7단계 : 글자수가 2자 이하면 마지막 문자를 붙여서 3자를 만들어줌 
    			if (list.size() < 3) {
    				char temp = list.get(list.size() - 1).charAt(0);
    				while(list.size()<3) {
    						list.add(temp + "");
    				}
    			}
    			for(String str:list){
    				answer += str;
    			}
    		return answer;
    
    	}
    }

    5. Growth 🍄


    JavaではArrayListの概念が非常に不足している.
    今回はKakaoの新しいIDの推薦を学ぶ過程でJENNERICもArrayListの方法を学びました.