java 프로그래머스 [Level 1] _신규 아이디 추천

2021. 4. 30. 15:32프로그래머스 알고리즘/코딩 테스트 문제

반응형

class Solution {

	private static String id = "";

	public String solution(String new_id) {

		id = new_id;

		ch01();
		System.out.println("1단계 : " + id);

		ch02();
		System.out.println("2단계 : " + id);

		ch03();
		System.out.println("3단계 : " + id);

		ch04();
		System.out.println("4단계 : " + id);

		ch05(new_id);
		System.out.println("5단계 : " + id);

		ch06();
		System.out.println("6단계 : " + id);

		ch07();
		System.out.println("7단계 : " + id);

		return id;
	}

	// 대문자 변환
	private void ch01() {
		id = id.toLowerCase();
	}

	// 특수 문자 제거
	// -_.~!@#$%^&*()=+[{]}:?,<>/
	private void ch02() {
		id = id.replace("~", "");
		id = id.replace("!", "");
		id = id.replace("@", "");
		id = id.replace("#", "");
		id = id.replace("$", "");
		id = id.replace("%", "");
		id = id.replace("^", "");
		id = id.replace("&", "");
		id = id.replace("*", "");
		id = id.replace("(", "");
		id = id.replace(")", "");
		id = id.replace("=", "");
		id = id.replace("+", "");
		id = id.replace("[", "");
		id = id.replace("{", "");
		id = id.replace("]", "");
		id = id.replace("}", "");
		id = id.replace(":", "");
		id = id.replace("?", "");
		id = id.replace(",", "");
		id = id.replace("<", "");
		id = id.replace(">", "");
		id = id.replace("/", "");
	}

	// 마침표 연속 치환
	private void ch03() {
		while (id.contains("..")) {
			id = id.replace("..", ".");
		}
	}

	// 처음, 끝 부분에 .일경우 제거
	private void ch04() {
		if (id.startsWith(".")) {
			id = id.substring(1, id.length());
		}

		if (id.endsWith(".")) {
			id = id.substring(0, id.length() - 1);
		}
	}

	// 빈 문자열 체크
	private void ch05(String new_id) {
		if (id.isEmpty()) {
			id += "a";
		}
	}

	// 16자, 끝. 확인
	private void ch06() {
		if (id.length() >= 16) {
			id = id.substring(0, 15);

			if (id.endsWith(".")) {
				id = id.substring(0, id.length() - 1);
			}
		}
	}

	// 길이 2자 이하
	private void ch07() {
		String endCh = String.valueOf(id.charAt(id.length() - 1));
		while (id.length() < 3) {
			id += endCh;
		}
	}
}

 

출제 링크 : programmers.co.kr/learn/courses/30/lessons/72410

 

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

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

programmers.co.kr

 


 

 

 

반응형