티스토리 뷰

코테이토 4기 알고리즘 스터디

- 11월 1주차 공통과제 A  [프로그래머스] 문자열 내 p와 y의 개수

 

 

🎈 문제 및 해석

들어온 문자열 내에 있는 p와 y의 개수를 구하여라

1.  문자열 내에서 문자 찾기

2. 대소문자 구분 없이 함께 세기

위의 두가지를 할 수 있는지가 키포인트가 되겠다. 

 

 

✨ 문제 풀이

# Python
def solution(s):
    pCnt = yCnt=0;
    for c in s:
        if c == 'P' or c== 'p':
            pCnt+=1
        elif c == 'Y' or c == 'y':
            yCnt+=1
    return pCnt == yCnt
// JavaScript
function solution(s){
    let pCnt=0; let yCnt=0;
    for(let i=0; i<s.length; i++){
        if(s[i]==='P'|| s[i]==='p') pCnt++;
        else if(s[i]==='Y'||s[i]==='y') yCnt++;
    }
    return pCnt===yCnt;
}

 문자열 하나하나를 배회하며 대소문자 p, y를 가려내어 별도의 변수(pCnt, yCnt)에 저장하였고, 둘의 값을 비교한 boolean 값을 리턴하였다.

 

 

🎯 추가

나는 단순히 사람이 생각하는 흐름 그대로 코드를 짯으나, 프로그래머스에 있는 다른 사람들의 풀이를 보니 모든 문자열을 대문자 혹은 소문자로 변경 후 문자의 개수를 세도록 짠 것을 보았다.  분명 전에는 나도 저렇게 풀었었는데, 한동안 안풀다 보니 감을 다 잃은 것 같아 조금 속상했다. 앞으로는 꾸준히 하도록 노력해보자..!

 Javascript로 푸신 분 중에서 대소문자를 통일한 후 p를 기준으로 문자열을 split하여 나눠진 array의 길이y를 기준으로 문자열을 split하여 나눠진 array의 길이를 비교한 bool값을 출력하시는 분을 보았는데, 무릎을 탁 치게 만드는 풀이였던 것 같다..! reduce 메서드를 사용하여 구현한 사람도 있었고...이번엔 다른 사람들의 풀이를 보며 잘 알지 못했던 메서드들을 새로이 알게 되거나 다른 방향으로 문제를 해석할 수 있었던 것 같다. 비록 문제는 기초중에 기초일지 몰라도, 많이 배워가는 것 간다!

기억해둘 메서드

// JavaScript
// s는 문자열
s.toUpperCase()
# Python
# s는 문자열
s.upper()
s.count('p')

 

Comments