하루에 한 문제

[프로그래머스 2021 KAKAO BLIND RECRUITMENT]신규 아이디 추천 -Java 본문

알고리즘/프로그래머스

[프로그래머스 2021 KAKAO BLIND RECRUITMENT]신규 아이디 추천 -Java

dkwjdi 2021. 1. 25. 19:23

https://programmers.co.kr/learn/courses/30/lessons/72410

 

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

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

programmers.co.kr

class Solution {
		public String solution(String new_id) {
			new_id=new_id.toLowerCase(); //1단계
			
			//2단계
			StringBuilder sb= new StringBuilder();
			for(int i=0; i<new_id.length(); i++) {
				char ch=new_id.charAt(i);
				if((ch>=97 && ch<=122) || ch=='-' || ch=='_' || ch=='.' || Character.isDigit(ch)) sb.append(ch);
			}
			new_id=sb.toString();
			
			//3단계
			int size=new_id.length();
			sb= new StringBuilder();
			for(int i=0; i<size; i++) sb.append('.');
			for(int i=0; i<size; i++) {
				new_id=new_id.replace(sb.toString(), ".");
				sb=new StringBuilder(sb.substring(1));
			}
			
			//4단계
			if(new_id.length()!=0 &&new_id.charAt(0)=='.') new_id=new_id.substring(1);
			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.equals("")) new_id="a";
			
			//6단계
			if(new_id.length()>=16) 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()<=2) {
				while(true) {
					if(new_id.length()>=3) break;
					new_id+=new_id.charAt(new_id.length()-1);
				}
			}
			return new_id;
		}
	}

소요시간 : 30분

 

딱히 설명이 필요 없을 것 같습니다. 그냥 1단계부터 7단계까지 시키는 것만 하면 됩니다!

 

주석에 1단계부터 7단계까지 있으니 보시면 될 것 같습니다.

 

1~7단계 중에 제일 어려웠던 게 저는 3단계였습니다...

 

어떻게 제거할지 생각이 안 나서 총길이의 개수만큼. 를 더해서 만들어주고. 

for문을 돌면서 .을 한 개씩 줄여주면서 replace 해주었는데

 

이 방법 말고도 좋은방법이 있을 거라고 생각합니다! 나중에 알게 되면 업데이트하겠습니다.

Comments