반응형
https://school.programmers.co.kr/learn/courses/30/lessons/72410?language=java
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr



풀이
7개의 단계가 있어서 문제가 어려워 보이지만 매우 간단하다.
문제를 보자마자 정규표현식을 떠올렸고 생각나는대로 작성했다.
정규표현식을 몰라도 충분히 풀 수 있는 문제이기 때문에 전혀 어렵지 않지만 정규표현식의 사용 유무에 따라 코드 길이가 엄청 달라진다.
class Solution { public String solution(String new_id) { String answer = ""; // 1단계. 대문자 -> 소문자로 변경 new_id = new_id.toLowerCase(); // 2단계. 알파벳, 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자를 제외한 모든 문자 제거 new_id = new_id.replaceAll("[^-_.a-z0-9]", ""); // 3단계. 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환 while (new_id.indexOf("..") != -1) { new_id = new_id.replace("..", "."); } // 4단계. 마침표(.)가 처음과 끝에 위치하고 있다면 삭제 if (new_id.startsWith(".")) { new_id = new_id.substring(1); } if (new_id.endsWith(".")) { new_id = new_id.substring(0, new_id.length() -1); } // 5단계. 빈 문자열이라면 a를 대입 if (new_id.isEmpty()) { new_id = "a"; } // 6단계. 길이가 16자 이상이면 15글자 이후 삭제 if (new_id.length() > 15) { new_id = new_id.substring(0,15); if (new_id.endsWith(".")) { new_id = new_id.substring(0, new_id.length() -1); } } // 7단계. 길이가 2자 이하라면 마지막 문자를 반복 (길이가 3이 될 때까지) while (new_id.length() < 3) { new_id += new_id.charAt(new_id.length() -1); } return new_id; } }
정규표현식을 이용해서 해결한 능력자
class Solution { public String solution(String new_id) { String id = new_id.toLowerCase(); // 소문자로 id = id.replaceAll("[^-_.a-z0-9]", ""); //-_. 영문자 숫자만 남김 id = id.replaceAll("[.]{2,}", "."); // .2개 이상 .으로 id = id.replaceAll("^[.]|[.]$", ""); // 처음과 끝 . 제거 if(id.equals("")) // 빈 문자열이라면 a 추가 id += "a"; if(id.length() >= 16){ // 16자 이상이면 15자로 id = id.substring(0, 15); id = id.replaceAll("^[.]|[.]$", ""); // 끝 . 제거 } if(id.length() <= 2) // 2자 이하라면 3자까지 마지막 문자추가 while(id.length() < 3) id += id.charAt(id.length() - 1); return id; } }
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스]JAVA - Level3. 코딩 테스트 공부 (2) | 2022.08.29 |
---|---|
[프로그래머스]JAVA - Level1. 성격 유형 검사하기 (0) | 2022.08.27 |
[프로그래머스]JAVA - Level2. 두 큐 합 같게 만들기 (0) | 2022.08.22 |
[프로그래머스]JAVA - Level2. 124 나라의 숫자 (0) | 2022.07.10 |
[프로그래머스]JAVA - Level3. N으로 표현 (0) | 2022.07.09 |