프로그래머스 - 문자열 내 p와 y의 개수

haesoo·2021년 6월 16일
0

알고리즘

목록 보기
5/5

📝 문제 설명

📌 새롭게 알게된 것!

1. String.prototype.match( )

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/match

2. 정규표현식 - 대/소문자 구분없이 사용해주기

이전에 아주 잠깐 유튜브를 통해 정규표현식에 관련된 영상을 본 적이 있었는데 ... 너무나도 낯설게 느꼈던 기억이 있다.. 시간이 조금 흐른 뒤 오늘 문제를 풀며 사용해보니 모른다고 겁이 나지는 않더라.. ㅎㅎ

var py = /[ p,y ]/ gi ;
-> g만 붙여주면 대/소문자 무시가 되지 않는다! i도 꼭 함께 붙여줘야만 한다.


💡 문제 풀이 과정

  1. 어떻게 해결하면 좋을까 생각하다가 먼저 대/소문자 구분하지 않고 문자열 내에서 처리가 가능하면 좋을 것 같다는 생각이 들었다!
    물론, 문자열을 모두 toUpperCase 또는 toLowerCase 로 변환해주면서 처리하는 방법도 있겠지만 안써본 방법을 사용해보고자 하였고 정규표현식을 처음으로 사용해볼 수 있었다. 😎

  2. 대부분의 이러한 문제들이 그렇듯이 for문을 사용해볼 수도 있을 것 같고 (뭔가 통달한 사람처럼 말했는데... 그런 것이 아니라 ㅠㅠ 가장 익숙하고 친한 친구인 for를 자동으로 떠올리는 것이다...) mdn으로 들어가서 string 을 검색한 뒤 사용할 수 있을 것 같은 메소드들을 찬찬히 읽어보았다! 그러던 중 두둥~ 아래의 이미지와 같이 match( )를 사용할 수 있을 것 같은 강한!! 예감이 들었다. 여기까진 순조로웠다...


처음 작성한 코드

생각해보니 이렇게 작성한다면 s가 "pyYy" 뭐 이런 식이라도 짝수기만 하면 전부 true가 되어버린다는 것을 테스트 실패하자마자 깨달았다.(ㅋㅋㅋ)


두번째 작성한 코드

p와 y를 각각 따로 변수로 선언해주고 length를 이용해서 길이를 비교해주는 방법이다!
하지만 테스트2,3번에서 런타임오류가 발생했다.😭

질문하기를 들여다보니 문자열에서 'p'와 'y' 모두 하나도 없는 경우를 처리해주지 못해서 인 것 같았다.

match( ) 의 경우 일치하는 것이 없으면 null 을 반환하는데, null 일 경우 length 프로퍼티는 사용할 수가 없기때문에 예외 처리를 해줘야하는 것이다....🤯

나중에 구글링을 통해서 사람들이 null일 경우 0으로 처리해주는 방식으로 작성했다는 글들을 봤는데 나의 경우는 그냥 null 값이 나오지 않도록 아예 임의의 값인 "py"를 주어진 s 문자열 안에 집어 넣어 버렸다..!


🔑 나의 풀이 결과

이렇게 작성해주었다! 결과는 모든 테스트 통과 ~ !

profile
후론트, 숨참고 딥 다이브

0개의 댓글