[ Programmers ] 신규 아이디 추천 (Java)

ma.caron_g·2021년 6월 19일
0

Lv.1 - Programmers (완성)

목록 보기
21/74
post-thumbnail

1. Problem 📃


[ ⚠️ 규칙 ⚠️ ]


2. Constraint 🔗


3. Solution 🔑

내가 문제를 푼 방식은 알고리즘의 개념을 그냥 그대로 이용했다
하나씩 차근차근 풀어나간다.

시험을 보느라 Java 코딩 실력이 많이 늘지 않아서 아직 봐도 지금 이 방법이 최선이겠지만 우선 적는다.

  1. Scanner 클래스를 이용해서 아이디를 입력 받는다
  2. 주어진 규칙에 따라 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에 대한 개념이 많이 부족했었는데
이번에 카카오 신규 아이디 추천을 공부하면서 제네릭도 공부하게 되었고, ArrayList를 다루는 방법을 습득했던거 같다.

profile
다른 사람이 만든 것을 소비하는 활동보다, 내가 생산적인 활동을 하는 시간이 더 많도록 생활화 하자.

0개의 댓글