본문 바로가기
코테연습

40. 신규 아이디 추천

by hxunz 2022. 5. 5.

https://programmers.co.kr/learn/courses/30/lessons/72410

 

코딩테스트 연습 - 신규 아이디 추천

카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로

programmers.co.kr

처음 프로그래머스 코테 연습 문제를 풀어보았다. 

문제 하나 푸는데 거의 하루종일 걸렸지만 

해결했고 뿌듯했다. 

 

1. 이해
// 우리가 풀려고 하는 문제는 무엇일까?
// 우리가 알고 있는 것은 무엇인가?
// 주어진 조건은 무엇인가?
// 기존에 비슷한 문제를 본적이 있는가?

2. 계획
// 어떤 정보를 가져와서
// 매트릭스를 만들고
// ~만든다.

3. 실행

4. 회고
// 이것을 어디에 적용할 수 잇을까?
// 어떻게 하면 효율적으로 풀 수 있을까?
// 어떻게 하면 효과적으로 풀 수 있을까?

위와 같은 단계를 정해두고 생각하면서 풀어보니 

어떤식으로 문제를 풀어나가야할지 감이 잡히고

계획했던 대로 하나씩 풀어보니까 

잘 풀리더라~

 


function solution(new_id) {
  const originLength = new_id.length;
    let result = new_id
            .toLowerCase()
            .replace(/[^\w\-_.]/g, '')
            .replace(/\.{2,}/g, '.')
            .replace(/^\.|\.$/g, '');
    if (result.length >= 16) {
        result = result.slice(0, 15).replace(/\.$/, '');
    }
    if (result === '') {
        return 'aaa';
    }
    if (result.length <= 2) {
        return result + result[result.length -1].repeat(3 - result.length)
    }
    
    return result;
}

하나씩 splice()함수를 사용하다가,,, 

이건 아니다 싶어서 생각해본 정규 표현식 이용하기

 

🤧 계획
  1. 대문자를 소문자로 바꾸기
  2. 알파벳 소문자, 숫자, -, _, . 을 제외한 문자 지우기
  3. .연속 사용 된거 . 하나로 바꾸기
  4. .가 처음이나 끝에 있으면 제거
  5. 빈문자열인 경우 a로 대체
  6. 길이가 3자 이상 15자 이하
  7. 길이가 2자 이하인 경우 마지막 문자열 추가
 
🥴 실행
  1. toLowerCase()
  2. replace(/[^\w\-_.]/g, '')
    ^ : 문자열의 시작 부분
    [] : 문자 선택
    \w : 모든 문자열, 숫자를 의미 
    g : 문자열 내의 모든 패턴을 검색 
  3. replace(/\.{2,}/g, '.')
    {숫자,} : 해당 숫자 만큼 반복
  4. replace(/^\.|\.$/g, '')
    $ : 문자열의 끝 부분
  5.  if (result.length >= 16) {
      result = result.slice(0, 15).replace(/\.$/, '');
    }
  6.  if (result === '') {  
      return 'aaa';
    }
  7.  if (result.length <= 2) {
      return result + result[result.length -1].repeat(3 - result.length)
    }
 
 
 

'코테연습' 카테고리의 다른 글

42. 숫자 문자열과 영단어  (0) 2022.05.12
41. 로또의 최고순위와 최저순위  (0) 2022.05.11
39.Valid Parentheses  (0) 2022.04.28
38.Moving Zeros To The End  (0) 2022.04.14
37.Simple Pig Latin  (0) 2022.04.11

댓글