| 문제 | 레벨 | 정답률 |
|---|---|---|
| 신규 아이디 추천 | Lv.1 | 51% |

class Solution {
public String solution(String new_id) {
String lowerStr = "";
String secondStr = "";
String thirdStr = "";
String fourthStr = "";
String fifthStr = "";
String sixthStr = "";
//1단계
for(int i = 0; i<new_id.length(); i++){
if(Character.isUpperCase(new_id.charAt(i))){
lowerStr += Character.toLowerCase(new_id.charAt(i));
} else{
lowerStr += new_id.charAt(i);
}
}
//2단계
for(int i = 0; i<lowerStr.length(); i++){
if(lowerStr.charAt(i) == '-' || lowerStr.charAt(i) == '_' ||
lowerStr.charAt(i) == '.' || Character.isDigit(lowerStr.charAt(i))){
secondStr = lowerStr.substring(0, i) + lowerStr.substring(i, lowerStr.length()-1);
}
}
//3단계
for(int i = 0; i<secondStr.length() - 1; i++){
if(secondStr.charAt(i) == '.' && secondStr.charAt(i + 1) =='.'){
secondStr = secondStr.substring(0, i) + secondStr.substring(i, lowerStr.length()-1);
}
}
//4단계
if(thirdStr.charAt(0) == '.' && thirdStr.length() > 0){
fourthStr = fourthStr.substring(0, 1);
} else if(thirdStr.charAt(thirdStr.length() - 1) == '.'){
fourthStr = fourthStr.substring(0, 0);
}
//5단계
if(fourthStr.isEmpty()){
fifthStr = "a";
} else{
}
//6단계
if(fifthStr.length() >= 16){
sixthStr = fifthStr.substring(0,16);
}
//7단계
if(sixthStr.length() <= 2 && thirdStr.length() > 0){
char lastChr = sixthStr.charAt(sixthStr.length()-1);
while(sixthStr.length()<3){
sixthStr += lastChr;
}
}
return sixthStr;
}
}
** 불통과 코드
class Solution {
public String solution(String new_id) {
String lowerStr = "";
String secondStr = "";
String thirdStr = "";
// 1단계: 대문자를 소문자로 변환
for (int i = 0; i < new_id.length(); i++) {
char c = new_id.charAt(i);
if (Character.isUpperCase(c)) {
lowerStr += Character.toLowerCase(c);
} else {
lowerStr += c;
}
}
// 2단계: 알파벳 소문자, 숫자, -, _, .를 제외한 모든 문자 제거
for (int i = 0; i < lowerStr.length(); i++) {
char c = lowerStr.charAt(i);
if (Character.isLowerCase(c) || Character.isDigit(c) || c == '-' || c == '_' || c == '.') {
secondStr += c;
}
}
// 3단계: 연속된 점을 하나의 점으로 변환
boolean wasDot = false;
for (int i = 0; i < secondStr.length(); i++) {
char c = secondStr.charAt(i);
if (c == '.') {
if (!wasDot) {
thirdStr += c;
wasDot = true;
}
} else {
thirdStr += c;
wasDot = false;
}
}
// 4단계: 처음이나 끝에 위치한 점 제거
if (thirdStr.length() > 0 && thirdStr.charAt(0) == '.') {
thirdStr = thirdStr.substring(1);
}
if (thirdStr.length() > 0 && thirdStr.charAt(thirdStr.length() - 1) == '.') {
thirdStr = thirdStr.substring(0, thirdStr.length() - 1);
}
// 5단계: 빈 문자열이면 "a"로 변경
if (thirdStr.isEmpty()) {
thirdStr = "a";
}
// 6단계: 길이가 16자 이상이면 첫 15개의 문자를 제외한 나머지 제거
if (thirdStr.length() > 15) {
thirdStr = thirdStr.substring(0, 15);
// 끝에 위치한 점 제거
if (thirdStr.charAt(thirdStr.length() - 1) == '.') {
thirdStr = thirdStr.substring(0, thirdStr.length() - 1);
}
}
// 7단계: 길이가 2자 이하라면 마지막 문자를 길이가 3이 될 때까지 반복
while (thirdStr.length() < 3) {
thirdStr += thirdStr.charAt(thirdStr.length() - 1);
}
return thirdStr;
}
}
substring 억지로 쓰려고 하지 말고, 쉽게 풀 수 있는건 쉽게 풀자..!
굳이 substring 안써도 그냥 붙이기만 하면 됨 ㅇㅇ
for (int i = 0; i < lowerStr.length(); i++) { char c = lowerStr.charAt(i); if (Character.isLowerCase(c) || Character.isDigit(c) || c == '-' || c == '_' || c == '.') { secondStr += c; } }
이런 식으로 굳이 문자열과 문자열을 붙이지 않아도 쉽게 해결할 수 있으니 쉽게 쉽게 생각하기,,