728x90
https://programmers.co.kr/learn/challenges
풀이 방법
수정중..
JAVA 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Kakao_2021_1 {
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String str=br.readLine();
// 1. 소문자로 치환
str=str.toLowerCase();
// 2. 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거
String str2="";
for (int i = 0; i < str.length(); i++) {
char curr=str.charAt(i);
if(97<=curr && curr<=122) {
str2+=str.charAt(i);
}
else if(0<=curr-'0' && curr-'0'<=9) {
str2+=str.charAt(i);
}
else if(curr=='-') {
str2+=str.charAt(i);
}
else if(curr=='_') {
str2+=str.charAt(i);
}
else if(curr=='.') {
str2+=str.charAt(i);
}
else {
continue;
}
}
// 3. 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다.
String str3="";
int cnt=0;
for (int i = 0; i < str2.length(); i++) {
char curr=str2.charAt(i);
if(curr=='.') {
cnt++;
}else if(curr!='.' && cnt>0) {
str3+='.';
str3+=curr;
cnt=0;
}else {
str3+=curr;
}
}
// 4. 마침표(.)가 처음이나 끝에 위치한다면 제거합니다.
if (str3.length()>0) {
if (str3.charAt(0)=='.') {
str3=str3.substring(1);
}
if (str3.charAt(str3.length()-1)=='.') {
str3=str3.substring(0, str3.length()-1);
}
}
// 5.빈 문자열이라면, new_id에 "a"를 대입합니다.
if (str3=="") {
str3="a";
}
/* 6.길이가 16자 이상이면, new_id의 첫 15개의 문자를 제외한 나머지 문자들을 모두 제거합니다.
만약 제거 후 마침표(.)가 new_id의 끝에 위치한다면 끝에 위치한 마침표(.) 문자를 제거합니다. */
if (str3.length()>=16) {
str3=str3.substring(0, 15);
}
if (str3.charAt(str3.length()-1)=='.') {
str3=str3.substring(0, str3.length()-1);
}
// 7. 길이가 2자 이하라면, new_id의 마지막 문자를 new_id의 길이가 3이 될 때까지 반복해서 끝에 붙입니다.
if(str3.length()<=2) {
while(str3.length()<3) {
str3+=str3.charAt(str3.length()-1);
}
}
System.out.println(str3);
}
}
그냥 주어진 조건 그대로 풀었다. 사실 설명할게 없을듯
확실히 자바가 파이썬보다 문자열 처리가 복잡?한거 같다...
다른사람들이 푼거 보니까 정규식 사용했던데 나는 정규식을 잘 알지 못해서 그냥 풀었다.
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[JAVA] 2021 카카오 신입개발자 - 메뉴 리뉴얼 (0) | 2021.09.10 |
---|