Skip to content

[프로그래머스] 신규 아이디 추천 #16

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 7, 2022
Merged

Conversation

NamJwong
Copy link
Owner

@NamJwong NamJwong commented Jun 7, 2022

문제

풀이 후기

이 문제는.... 정규표현식을 공부하고 적용해보고 싶어서 계속 두고두고 풀기를 미루던 문제이다
생활코딩 정규표현식 강의를 계속 쫌쫌따리 들었었는데 내용 정리를 케이스 하나하나 다 해놓는다고 진도가 안나가서 작년부터 지금까지 끝내질 못했다
그런데 역시 실전에서 바로 써보는 것이 짱이다
어려워서 그냥 정답 코드 검색해서 정규표현식 부분만 참고해서 코드를 짰는데 강의 듣고 필기하던 것보다 백배는 이해가 빠르게 됐다
슬쩍 봤던 정답 코드들이랑 코드 길이부터 너무 차이나서 잘짠 코드인지는 모르겠다
그렇지만 정규표현식을 처음으로 실전에 사용해본 것만으로도 충분히 의미있었다

다른 사람의 풀이와 비교

좋아요 1등 풀이

function solution(new_id) {
    const answer = new_id
        .toLowerCase() // 1
        .replace(/[^\w-_.]/g, '') // 2
        .replace(/\.+/g, '.') // 3
        .replace(/^\.|\.$/g, '') // 4
        .replace(/^$/, 'a') // 5
        .slice(0, 15).replace(/\.$/, ''); // 6
    const len = answer.length;
    return len > 2 ? answer : answer + answer.charAt(len - 1).repeat(3 - len);
}
  • 2단계에서 _는 포함 안해도 된다! \w에 포함돼있기 때문이다
  • ^$가 빈문자열이구나..! (^-시작, $-끝)
  • repeat..! 혹시나 해서 a * 2를 테스트 해봤는데 NaN이 나온다 문자열 반복에 쓸 수 있는 함수구나!

좋아요 2등 풀이

const solution = (new_id) => {
    const id = new_id
        .toLowerCase()
        .replace(/[^\w\d-_.]/g, '')
        .replace(/\.{2,}/g, '.')
        .replace(/^\.|\.$/g, '')
        .padEnd(1, 'a')
        .slice(0, 15)
        .replace(/^\.|\.$/g, '')        
    return id.padEnd(3, id[id.length-1])
}
  • \d는 안써도 된다 숫자는 \w에 포함되어 있기 때문이다
  • padEnd를 이렇게 이용하다니..!
  • 마지막 replace에 ^\.는 없어도 된다 귀찮아서 위에꺼 복붙한 것일까

@NamJwong NamJwong self-assigned this Jun 7, 2022
@NamJwong NamJwong merged commit 1df8dac into main Jun 7, 2022
@NamJwong NamJwong deleted the algorithm/#15 branch June 7, 2022 15:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[프로그래머스] 신규 아이디 추천
1 participant