프로그래머스 - 신규 아이디 추천

UkJJang·2021년 11월 13일
0
  • 정규표현식과 조건문이 많이들어가는 문제이기 때문에 따로 클래스를 만들어 메소드에 조건들을 작성하여 해결하였다.
  • 정규표현식의 공부가 필요하다는 것을 느낄 수 있는 문제였다.
class Solution {
              public String solution(String new_id) {

            String answer = new KakaoId(new_id)
                    .toLower()
                    .filterId()
                    .removeDot()
                    .startDotRemove()
                    .endDotRemove()
                    .noBlank()
                    .idGreaterThan16()
                    .endDotRemove()
                    .idLessThan()
                    .getResult();

            return answer;
        }

public static class KakaoId {

            String id;

            public KakaoId(String id) {
                this.id = id;
            }
            public KakaoId toLower() {
                this.id = this.id.toLowerCase();
                return this;
            }
            
            public KakaoId filterId() {
               this.id = this.id.replaceAll("[^a-z0-9._-]","");
                return this;
            }

            public KakaoId removeDot() {
                this.id = this.id.replaceAll("[.]{2,}", ".");
                return this;
            }

            public KakaoId noBlank() {
                if(this.id.isBlank()) this.id = "a";
                return this;
            }

            public KakaoId startDotRemove() {
                if(this.id.startsWith("."))  {
                    this.id = this.id.substring(1, this.id.length());
                }
                return this;
            }

            public KakaoId endDotRemove() {
                if(this.id.endsWith("."))  {
                    this.id = this.id.substring(0, this.id.length() - 1);
                }
                return this;
            }

            public KakaoId idGreaterThan16() {
                if(this.id.length() >= 16) {
                    this.id = this.id.substring(0,15);
                }
                return this;
            }

            public KakaoId idLessThan() {
                if (this.id.length() <= 2) {
                    while (this.id.length() < 3) {
                       this.id += this.id.charAt(this.id.length() - 1);
                    }
                }
                return this;
            }

            public String getResult() {
                return this.id;
            }

        }

}
profile
꾸준하게 성실하게

0개의 댓글