문제
나의 풀이

KEY POINT : toLowerCase(), split(), map()함수 , 삼항연산자
들어오는 배열(s)을 toLowerCase함수를 사용하여 소문자로 바꿔준 후, split("")를 사용하여 배열로 변환한다.
그다음 map함수를 사용하여 순회하는 data가 'p'일경우(true) count변수의 첫 넘버값을 1 증가시키고 그렇지 않으면(false) 다음 삼항연산자를 실행.
data가 'y'이면 count변수의 두번째 인덱스의 넘버값을 1증가시키고 그렇지않으면 빈값을 리턴.
마지막으로 p의 카운트와 y의 카운트를 비교해야하므로 같으면 true를 리턴 그렇지 않으면 false를 리턴한다.
다른 사람 풀이방식
function numPY(s){
//함수를 완성하세요
return s.toUpperCase().split("P").length === s.toUpperCase().split("Y").length;
}
다른 사람의 풀이방식을 보고 한 10초동안 계속 웃었던 것 같다.
이렇게 쉽게 할 수 있었다니 쉽게 코드짜는 거는 너무 어려운 것같다. 어떻게 이렇게 가볍게 코드를 짤 수 있을까?
코드의 세계는 정말 멀고도 힘들구나생각해본다.
들어오는 배열(s)을 대문자로 치환하고 문자열 "P"를 기준으로 잘라서 배열로 반환한다.
그 배열의 길이를 리턴하고 비슷한 방법으로 문자열 "Y"도 배열로 치환한 후 길이를 리턴하여 두 배열의 길이를 비교한다.
이것은 1===1 이기때문에 같으면 true 다르면 false를 반환한다.
정말 재밌고 우스운 코드가 아닐 수 없다. 이렇게나 간편하게 짤 수 있다니..
키 포인트는 s인자의 배열안에 모든 문자열을 비교하지 않고 필요한 문자열만 잘라서 가져와서 그것의 길이를 비교한 것.
정말 대단하다.
'코딩테스트 입문' 카테고리의 다른 글
서울에서 김서방 찾기 (0) | 2022.11.19 |
---|---|
문자열 다루기 기본 (0) | 2022.11.19 |
내적 (0) | 2022.11.19 |
나누어 떨어지는 숫자 배열 (0) | 2022.11.19 |
2016년 (날짜구하기) (0) | 2022.11.19 |