Hayden's Archive
[알고리즘] 프로그래머스 : 신규 아이디 추천 본문
알고리즘 문제 출처 : programmers.co.kr/learn/courses/30/lessons/72410
내가 작성한 코드
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;
}
}