https://school.programmers.co.kr/learn/courses/30/lessons/72410
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
1. 정규식 : 알파벳 소문자, 숫자 특정 문자 빼고 다 지워라 => ( [^ ] )
^ 기호가 대괄호[] 안에 들어가면 '제외하고(not)' 라는 뜻이 된다.
answer = answer.replaceAll("[^a-z0-9-_.]", "");
2. 정규식 : 특정 문자가 연속으로 반복되면 하나로 줄여라 ( + )
+ 기호는 앞의 문자가 '1번 이상 연속으로 등장' 할 때를 의미한다.
단, 마침표(.) 같은 특수문자는 정규식에서 특별한 의미 (모든 문자)를 갖기 때문에,
순수한 마침표 기호로 인식하려면 앞에 백슬래시 2개 (\\) 를 붙여야 한다.
answer = answer.replaceAll("\\.", ".");
3. 정규식 : 숫자만 다 지워라 또는 문자만 다 지워라
[0-9] : 모든 숫자
[a-zA-Z] : 모든 대소문자 알파벳
answer = answer.replaceAll("[0-9]", "");
4. 정규식 : 공백(띄어쓰기)을 전부 지우거나 다른 걸로 바꿔라 ( \\s )
\\s : 공백, 탭, 줄바꿈 등 모든 공백 문자
answer = answer.replaceAll("\\s", "");
5. charAt(index) : 그 위치에 있는 문자를 반환
Java에서 문자열은 0번부터 시작하는 배열 형태
6. substring()
- substring(beginIndex) : beginIndex부터 문자열 맨 끝까지 자르기
- substring(beginIndex, endIndex) : beginIndex부터 endIndex-1 까지 자름
7. 대소문자 변환
toLowerCase() : 모든 대문자를 소문자로 변환
toUpperCase() : 모든 소문자를 대문자로 변환
answer = answer.toLowerCase();
8. 문자열 포함 여부 확인
contains() : 결과값을 true 또는 false 로 반환
String email = "test@naver.com";
if (email.contains("naver")) {
System.out.println("네이버 메일입니다."); // 출력됨
}
9. 문자열 교체
replace(기존, 바꿀문자) : 일반적인 문자열 매칭 치환
replaceAll(정규식, 바꿀문자) : 정슈 표현식을 사용할 수 있는 치환
10. 문자열 분리
split() : 특정 문자열을 잘라 배열로 만들어준다
String DynamicArray = "사과,바나나,포도";
String[] fruits = DynamicArray.split(","); // 쉼표를 기준으로 자름
System.out.println(fruits[0]); // 출력: 사과
System.out.println(fruits[1]); // 출력: 바나나
11. 앞뒤 공백 제거
trim() : 문자열의 맨앞과 맨뒤에 있는 쓸데없는 공백(띄어쓰기, 줄바꿈)을 지워준다
글 사이에 있는 공백은 지우지 않는다
12. 문자열 길이 확인 : length()
배열의 길이 : arr.length
문자열의 길이 : str.length()
class Solution {
public String solution(String new_id) {
// 1. 모든 대문자는 소문자로
String answer = new_id.toLowerCase();
// 2. 알파벳, 숫자, -, _, .을 제외한 모든 문자 제거
answer = answer.replaceAll("[^a-z0-9-_.]","");
// 3. 마침표가 2번 이상 연속된 부분은 1개로 치환
answer = answer.replaceAll("\\.+", ".");
// 4. 마침표가 처음이나 끝에 있을 경우 제거
if(answer.length()>0 && answer.charAt(0) == '.'){
answer = answer.substring(1);
}
if(answer.length()>0 && answer.charAt(answer.length()-1) == '.'){
answer = answer.substring(0, answer.length()-1);
}
// 5. 빈 문자열이라면, a를 대입
if(answer.length() == 0)
answer = "a";
// 6. 길이가 16이상이면 처음 15문자 제외하고 제거
if(answer.length() > 15){
answer = answer.substring(0, 15);
if(answer.charAt(answer.length()-1) == '.'){
answer = answer.substring(0, answer.length()-1);
}
}
//7. 길이가 2이하이면 길이가 3이 될 때까지 마지막 문자 반복
while(answer.length() < 3){
answer += answer.charAt(answer.length()-1);
}
return answer;
}
}'코딩테스트' 카테고리의 다른 글
| [프로그래머스/Java] 문자열 뒤집기 (StringBuilder) (0) | 2026.07.07 |
|---|---|
| [프로그래머스/Java] 문자열 내림차순으로 배치하기 (StringBuilder 개념) (0) | 2026.07.07 |
| [프로그래머스/Java] 성격 유형 검사하기 (HashMap) (0) | 2026.07.06 |
| [프로그래머스/Java] 전화번호 목록 (HashMap) (0) | 2026.07.06 |
| [프로그래머스/Java] 폰켓몬 (HashSet) (0) | 2026.07.05 |