코딩 정복 가즈아~
Home
  • 분류 전체보기 (159)
    • 알고리즘 풀이 (149)
      • 프로그래머스 (89)
      • 백준 (59)
    • 취준 일기 (6)
    • 네트워크 정리 (1)
Home
  • 분류 전체보기 (159)
    • 알고리즘 풀이 (149)
      • 프로그래머스 (89)
      • 백준 (59)
    • 취준 일기 (6)
    • 네트워크 정리 (1)
블로그 내 검색

코딩 정복 가즈아~

(っ◔◡◔)っ ♥ 2021 취뽀하자!! ♥

  • 알고리즘 풀이/프로그래머스

    [level1] 프로그래머스 - 신규 아이디 추천(JAVA)

    2021. 8. 25.

    by. 데롱디롱

    728x90
    solution함수 안에 부분 보시면 됩니다!

     

     

    - 문제에 적혀있는대로, 순서대로 차근차근 나아가면 되는 문제였다.

     

     

    package com.pro.level1;
    
    public class 신규아이디추천 {
    
    	public static void main(String[] args) {
    		System.out.println(solution("abcdefghijklmn.p"));
    	}
    
    	public static String solution(String new_id) {
    
    		// 1단계 : 대소문자 전환
    		new_id = new_id.toLowerCase();
    
    		// 2단계 : 소문자, 숫자, -, _, .가 아닌 문자 제거
    		StringBuilder sb = new StringBuilder();
    		for (int i = 0; i < new_id.length(); i++) {
    			char a = new_id.charAt(i);
    
    			if (('a' <= a && a <= 'z') || a == '-' || a == '_' || a == '.' || Character.isDigit(a))
    				sb.append(a);
    		}
    
    		// 3단계 : . 2번 이상이면 하나만 사용
    		for (int i = 0; i < sb.length(); i++) {
    			char a = sb.charAt(i);
    
    			if (a == '.') // 자기 뒤에오는 마침표는 모두 제거
    				while (i + 1 < sb.length() && sb.charAt(i + 1) == '.')
    					sb.deleteCharAt(i + 1);
    		}
    
    		// 4단계 : 맨 앞과 맨 뒤 . 제거
    		if (sb.charAt(0) == '.')
    			sb.deleteCharAt(0);
    		if (sb.length() != 0 && sb.charAt(sb.length() - 1) == '.')
    			sb.deleteCharAt(sb.length() - 1);
    
    		// 5단계 : 빈 문자열이면, a 대입
    		if (sb.length() == 0)
    			sb.append('a');
    		
    		// 6단계 : 문자 길이는 15자까지만
    		if(sb.length() >= 16) {
    			sb = new StringBuilder(sb.substring(0, 15));
    			
    			if (sb.charAt(sb.length() - 1) == '.')	// 맨 뒤 .제거
    				sb.deleteCharAt(sb.length() - 1);
    		}
    		
    		// 7단계 : 2자이하면, 글자 길이 3자가될때까지 마지막 문자 복사
    		if(sb.length() <= 2) {
    			char a = sb.charAt(sb.length()-1);
    			while(sb.length() < 3)
    				sb.append(a);
    		}
    
    		return sb.toString();
    	}
    }
    저작자표시 (새창열림)

    '알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글

    [level1] 프로그래머스 - 내적(JAVA)  (0) 2021.08.25
    [level1] 프로그래머스 - 소수만들기(JAVA)  (0) 2021.08.25
    [level1] 프로그래머스 - 로또의 최고순위와 최저순위(JAVA)  (0) 2021.08.25
    [level1] 프로그래머스 - 숫자 문자열과 영단어(JAVA)  (0) 2021.08.25
    [level1] 프로그래머스 - 키패드 누르기(JAVA)  (0) 2021.08.25

    댓글

    관련글

    • [level1] 프로그래머스 - 소수만들기(JAVA) 2021.08.25
    • [level1] 프로그래머스 - 로또의 최고순위와 최저순위(JAVA) 2021.08.25
    • [level1] 프로그래머스 - 숫자 문자열과 영단어(JAVA) 2021.08.25
    • [level1] 프로그래머스 - 키패드 누르기(JAVA) 2021.08.25
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

피할 수 없다면, 순간을 즐겨라

Designed by Nana
블로그 이미지
데롱디롱
희희.. (๑′ᴗ‵๑)

티스토리툴바