728x90

https://programmers.co.kr/learn/challenges

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr


풀이 방법

수정중..

 

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
복사했습니다!