📍 문제 설명
https://programmers.co.kr/learn/courses/30/lessons/72410
💡 접근
입력이 1000이하로 들어와서 통과했지 아니였으면 통과하지 못했을 것 같다.
StringBuilder를 사용해도 문자열 길이를 줄이거나 삭제등의 연산이 가능하다!
👩💻 코드
class Solution {
public String solution(String new_id) {
String answer = "";
//1
new_id = new_id.toLowerCase();
//2
new_id = new_id.replaceAll("[^a-z0-9-_.]", "");
//3
while(true) {
if(new_id.contains("..")) new_id = new_id.replace("..", ".");
else break;
}
//4
if(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.length() == 0) 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);
}
while(new_id.length() <= 2) {
new_id += new_id.charAt(new_id.length() -1);
}
answer = new_id;
return answer;
}
public static void main(String[] args) {
Solution s = new Solution();
System.out.println(s.solution("=.="));
}
}
import java.util.Locale;
class Solution {
boolean isValid(char c) {
if(Character.isLetterOrDigit(c)) return true;
if(c == '.' || c == '_' || c == '-') return true;
return false;
}
public StringBuilder solution(String new_id) {
StringBuilder answer = new StringBuilder();
//1,2,3, 4의 첫 '.' 제거
boolean lastDot = false;
for(char ch : new_id.toCharArray()) {
//입력 불가능한 문자는 넘어가기
if(isValid(ch) == false) continue;
//'.'일 땐
if(ch == '.') {
//첫 문자이거나 이전 문자가 '.'이면 붙이지 말고 그냥 넘어가기
if(answer.length() == 0 || lastDot) continue;
lastDot = true;
} else lastDot = false;
ch = Character.toLowerCase(ch);
answer.append(ch);
}
System.out.println(answer);
//5
if(answer.length() == 0) answer.append('a');
System.out.println(answer);
//6
if(answer.length() >= 16) answer.setLength(15);
//4의 끝문자는 어차피 여기서 제거가 된다.
if(answer.charAt(answer.length() - 1) == '.') answer.deleteCharAt(answer.length() - 1);
//7
if(answer.length() <= 2) {
while(answer.length() < 3) answer.append(answer.charAt(answer.length() - 1));
}
return answer;
}
public static void main(String[] args) {
Solution s = new Solution();
System.out.println(s.solution(".abcdefghijklmn."));
}
}
'Algorithm > programmers' 카테고리의 다른 글
[2019 카카오 블라인드]오픈채팅방 (0) | 2022.02.23 |
---|---|
[2022 카카오 블라인드]신고 결과 받기 (0) | 2022.02.22 |
[2020 카카오 인턴십]키패드 누르기 (0) | 2021.12.05 |
[2018 카카오 블라인드 1차]비밀지도 (0) | 2021.12.04 |
[2018 카카오 블라인드 1차]다트 게임 (0) | 2021.12.03 |