반응형

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

 

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

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

programmers.co.kr

쉬워 보이지만 결국에는 정규식을 얼마나 잘 사용하냐를 보는 문제 같습니다. 

정규식 사용을 위해서 여러 블로그를 참고하여서 풀게 되었습니다.

package com.ji.test;

import static org.junit.Assert.assertEquals;

import org.junit.jupiter.api.Test;

import com.ji.study.RecommNewId;

public class RecommNewIdTest {
	
	@Test
	void test() {
		
		RecommNewId test = new RecommNewId();
		
		assertEquals("bat.y.abcdefghi", test.solution("...!@BaT#*..y.abcdefghijklm"));
		assertEquals("z--", test.solution("z-+.^."));
		assertEquals("aaa", test.solution("=.="));
		assertEquals("123_.def", test.solution("123_.def"));
		assertEquals("abcdefghijklmn", test.solution("abcdefghijklmn.p"));
		
	}

}
package com.ji.study;

public class RecommNewId {

	public static String solution(String new_id) {
		 String answer = new_id.toLowerCase(); // 1단계

	        answer = answer.replaceAll("[^-_.a-z0-9]", ""); // 2단계
	        answer = answer.replaceAll("[.]{2,}", "."); // 3단계
	        answer = answer.replaceAll("^[.]|[.]$", "");    // 4단계
	        
	        if (answer.equals("")) {    // 5단계
	            answer += "a";
	        }

	        if (answer.length() >= 16) {     // 6단계
	            answer = answer.substring(0, 15);
	            answer = answer.replaceAll("[.]$","");
	        }

	        if (answer.length() <= 2) {  // 7단계
	            while (answer.length() < 3) {
	                answer += answer.charAt(answer.length()-1);
	            }
	        }

	        return answer;
	}
	


}
728x90

'[개발관련] > 코테준비' 카테고리의 다른 글

[백준] 1로 만들기  (0) 2021.06.13
[백준] 바이러스  (0) 2021.06.13
[프로그래머스] [1차] 캐시  (0) 2021.06.13
동적계획법(Dynamic Programming)  (0) 2021.06.13
[프로그래머스] 프린터  (0) 2021.05.07

+ Recent posts