알림
본 포스팅은 공부 목적으로 작성된 글이며 상업적 목적으로 절대 사용되지 않았음을 밝힙니다.
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12916?language=javascript
대문자와 소문자가 섞여있는 문자열 s가 주어집니다.
s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요.
'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.
예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.
코드
function solution(s){
let str = s.toLowerCase();
let num = 0;
for(let i = 0; i <= str.length; i++){
if(str[i] == 'p'){
num++;
}else if(str[i] == 'y'){
num--;
}
}
return num == 0 ? true : false
}
풀이
문제에서 대문자와 소문자를 구분하지 않는다 하여 먼저 소문자나 대문자로 통일을 해 줬습니다. 문자열을 비교하는 것이기 때문에, 대, 소문자를 구분하지 않는다면 하나로 통일을 해야 비교하는 데 있어 용이하기 때문입니다.
저는 toLowerCase()를 사용하여 들어오는 문자열을 소문자로 변환해 줬으며, toUpperCase()로 해도 상관 없습니다.(단, 조건문에서 대문자로 작성해야 함)
이어 소문자(혹은 대문자)로 변환된 단어 길이만큼 반복문을 돌려, p일 때 0으로 선언한 변수가 1씩 증가, y일 땐 변수가 1씩 감소하게끔 코드를 작성해 줬습니다.
이처럼 작성을 하게 되면 변수가 0으로 출력되면 p와 y의 개수가 같다는 의미이기 때문에, 변수가 0이면(p = y) true, 아니면 false를 출력하도록 조건문을 작성하여 답을 도출할 수 있게 됩니다.
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers] 두 정수 사이의 합(JavaScript) (0) | 2022.07.21 |
---|---|
[Programmers] 로또의 최고 순위와 최저 순위(JavaScript) (0) | 2022.07.20 |
[Programmers] 수박수박수박수박수박수?(JavaScript) (0) | 2022.05.14 |
[Programmers] 약수의 합(JavaScript) (0) | 2022.05.11 |
[Programmers] 이상한 문자 만들기(JavaScript) (0) | 2022.05.10 |
댓글