프로그래머스 lv1 0702

HyeJi9908·2022년 7월 2일
0

[JAVA] 프로그래머스

목록 보기
2/11

🔎 개념

알파벳인지 숫자인지 판별

Character.isAlphabetic(char)
Character.isDigit(char)

전체문자열을 소문자로 변환

String str = input.toLowerCase();

특정 문자열 붙이기

1.String.concat(String or char);
2.StringBuilder.append(String or char);

특정 문자를 문자열에서 제거

1.String.replace(String,"");
2.StringBuilder.deleteCharAt(int);
(3.String.substring(int start,int end); // 이건 특정구간의 문자열만 남기는 메서드)

반환형태 주의!!
String메서드 사용시 step3=step3.replace("..", ".");
StringBuilder메서드 사용시 step2.append(c);

StringBuilder 클래스 예제

public class StringBuffer {
	public static void main(String[] args) {
		String str = "abcdefghijk";
		StringBuilder sb = new StringBuilder(str); 
        // 문자열 -> StringBuilder
        
		p("문자열 String 로 변환 : " + sb.toString()); 
        // 출력결과 : 문자열 String 로 변환 : abcdefghijk
        
		p("문자열 추출 : " + sb.substring(3,7)); 
        // 출력결과 : 문자열 추출 : defg
        
		p("문자열 연결 : " + sb.append("xyz")); 
        // 출력결과 : 문자열 연결 : abcdefghijkxyz
        
		p("문자열의 길이 : " + sb.length()); 
        // 출력결과 : 문자열의 길이 : 14
        
		p("용량의 크기 : " + sb.capacity()); 
        // 출력결과 : 용량의 크기 : 27
        
		p("문자열 역순 변경 : "  + sb.reverse()); 
        // 출력결과 : 문자열 역순 변경 : zyxkjihgfedcba
		
		//StringBuilder의 메서드는 원본에영향을 끼친다
		p("문자열 String 로 변환 : " + sb.toString()); // 출력결과 : 문자열 String 로 변환 : zyxkjihgfedcba
		
		p(sb2.toString()); 
        // StringBuilder 객체 출력할 땐 String으로 변환시켜주기
		
	} // end of main
	
	public static void p(String str){
		System.out.println(str);
	}
} // end of class
출처: https://zzdd1558.tistory.com/143 [YundleYundle:티스토리]

📚 신규아이디 추천

class Solution {
    public String solution(String new_id) {
        String answer = "";
        
        // 1. 모든 대문자 -> 소문자
        new_id=new_id.toLowerCase();
        
        // 2.알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거
        char[] id_arr = new_id.toCharArray();
        StringBuilder strBuilder = new StringBuilder(); // append 메서드 쓰기 위해 StringBuilder객체 생성
        for(char c:id_arr) {
        	if( (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9')||c=='-'||c=='.'||c=='_') {
        		strBuilder.append(c);
        	}
        }
        
        // 3. .가 두번 이상 연속된 부분을 .으로 치환
        new_id = strBuilder.toString().replace("..", ".");
        while(new_id.contains("..")) {
        	new_id=new_id.replace("..", ".");
        }
        
        // 4. .가 처음이나 끝에 위치하면 제거 
        StringBuilder strBuilder2 = new StringBuilder(new_id);
        if(strBuilder2.length()>0) {
        	if(strBuilder2.charAt(0)=='.'){
        		strBuilder2.deleteCharAt(0);
        	}
        }
        if(strBuilder2.length()>0) {
        	if(strBuilder2.charAt(strBuilder2.length()-1)=='.') {
        		strBuilder2.deleteCharAt(strBuilder2.length()-1);
        	}
        }
        	
        // 5. 빈 문자열이면 'a' 대입
        new_id = strBuilder2.toString();
        if (new_id.equals("")) { // StringBuilder 객체를 String객체로 변환
        	new_id="a";
        }
        
        // 6. 길이가 16이상이면 첫 15자를 제외한 나머지 문자들 제거 + 만약 제거후 마지막 문자가 .이면 .도 제거
        
        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. 길이가 2자 이하라면 마지막 문자를 길이가 3이 될때까지 반복해서 붙임
        StringBuilder strBuilder3 = new StringBuilder(new_id);
        if(strBuilder3.length()<=2) {
        	while(strBuilder3.length()<3) {
        		strBuilder3.append(strBuilder3.charAt(strBuilder3.length()-1)); 
        	}
        }
        
        answer = strBuilder3.toString();
        return answer;
    }
}

0개의 댓글