Hayden's Archive

[알고리즘] 프로그래머스 : 신규 아이디 추천 본문

Algorithm

[알고리즘] 프로그래머스 : 신규 아이디 추천

_hayden 2021. 2. 20. 15:42

알고리즘 문제 출처 : programmers.co.kr/learn/courses/30/lessons/72410

 

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

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

programmers.co.kr

 

내가 작성한 코드

StringIndexOutOfBoundsException 가 터져서 코드를 다시 확인해봤는데 .이나 @와 같은 아이디가 올 경우, 맨앞이나 맨뒤에 오는 .을 제거하는 부분에서 에러가 터졌다. 이 부분에 조건을 추가해서 예외가 터지지 않도록 코드를 수정했다.

이것으로 현재까지 올라온 프로그래머스 1단계 연습문제는 모두 끝~!

public class Solution {

	public String solution(String new_id) {
		String answer = "";

		if(new_id != null && new_id.length() > 0) {

			/* 1 */
			new_id = new_id.toLowerCase();

			/* 2 */
			String specialStr = "~!@#$%^&*()=+[{]}:?,<>/";
			for(int i=0; i<new_id.length(); i++) {
				boolean isSpecialStr = false;
				for(int j=0; j<specialStr.length(); j++) {
					if(new_id.charAt(i) == specialStr.charAt(j)) {
						isSpecialStr = true;
					}
				}
				if(!isSpecialStr) {
					answer += new_id.substring(i, i+1);
				}
			}
			new_id = answer;
			answer = "";

			/* 3 */
			boolean isContinuedDot = false;
			for(int i=0; i<new_id.length(); i++) {
				if(new_id.charAt(i) == '.') {
					if(isContinuedDot) continue;
					isContinuedDot = true;
				}else {
					isContinuedDot = false;
				}
				answer += new_id.substring(i, i+1);
			}
			new_id = answer;

			/* 4 */
			if(new_id.length() > 0 && new_id.charAt(0) == '.') {
				new_id = new_id.substring(1, new_id.length());
			}
			if(new_id.length() > 0 && new_id.charAt(new_id.length()-1) == '.') {
				new_id = new_id.substring(0, new_id.length()-1);
			}
		}

		/* 5 */
		if(new_id == null || new_id.length() == 0) {
			new_id = "a";
		}

		/* 6 */
		if(new_id.length() > 15) {
			new_id = new_id.substring(0, 15);
			if(new_id.charAt(new_id.length()-1) == '.') {
				new_id = new_id.substring(0, new_id.length()-1);
			}
		}

		/* 7 */
		if(new_id.length() < 3) {
			String lastStr = new_id.substring(new_id.length()-1, new_id.length());
			for(int i=0; i<2; i++) {
				new_id += lastStr;
			}
			new_id = new_id.substring(0, 3);
		}

		return new_id;
	}
}