728x90
반응형
문자열 내 p와 y의 개수
대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요.
'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다.
단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.
예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.
function solution(s) {
let answer = true;
let p = 0;
let y = 0;
for(let i = 0; i < s.length; i++) {
console.log(s[i]); // 문자열 하나씩 가져오기 확인
if(s[i]==='p' || s[i]==='P') {
p++;
} else if (s[i]==='y' || s[i] === 'Y') {
y++
}
}
console.log(p, y)
answer = p===y;
return answer;
}
solution('Syou')
알고리즘..아날저글링이 푸는거 좋아하겠다 ^^
코드 줄이기
처음부터 모두 소문자로 바꾼 뒤 계산하면 대문자 확인 할 필요가 없다.
s[i] === 'p' ? p++ : y++
p나 y가 아닌 다른 문자열이 들어올 때는, 즉 obj[s[i]] === undefined 일 때는 obj[s[i]] = 0 초기값을 0으로 준다.
function solution(s) {
s = s.toLowerCase();
const obj = {p: 0, y: 0}
for(let i = 0; i < s.length; i++) {
if(obj[s[i]] === undefined) obj[s[i]] = 0
obj[s[i]]++
}
return obj.p===obj.y
}
헉...완전 신기해
근데 이걸 또 줄인다 . . .?
맵은 배열 형태를 리턴하니까, 굳이 그걸로 받을 필요 없어~~~ foreach 쓰겠음
forEach는 반환값이 없다!
function solution(s) {
s = s.toLowerCase()
const obj = {}
const str = s.split('').forEach(str => {
obj[str] === undefined ? obj[str] = 1 : obj[str]++
})
return obj.p === obj.y
}
어 이거 맞나
function solution(s) {
return s.toLowerCase().split('p').length === s.toLowerCase().split('y');
}
진짜 천재 같애 머야..?
p를 기준으로 분할, y를 기준으로 분할
* split은 아무인자도 전달하지 않으면 문자열 전체를 length가 1인 배열에 담아서 리턴한다.
* " "로 자르면 스페이스를 구분자로 잘라서 그 조각들을 배열에 저장하여 리턴
* ""로 자르면 공백 포함해서 쪼개서 그 조각들을 배열에 저장하여 리턴
그냥 그 구분자가 벽으로 사라진다 생각해~!!!!
이상한 뚱땅뚱 만들기

🍯팁^^ console로 answer를 찍어보며 하자...
글짜 쪼개기

1. 덩어리로 쪼개기 2. 글자로 쪼개기 3. 짝수 인덱스엔 대문자, 홀수 인덱스엔 소문자
4. ''로 join(배열을 쉼표 빼고 문자열로) 5. 그걸 다시 ' '로 join
function solution(s) {
const answer = s.split(' ').map(word => word.split('').map((letter, i) => {return i%2 === 0 ? letter.toUpperCase() : letter.toLowerCase()}).join('')).join(' ')
return answer;
console.log(answer)
}
뭐야 어려워
728x90
반응형
'프론트엔드✏️ > 코드캠프' 카테고리의 다른 글
알고리즘 - reverse, sort, 삼항연산자로 return (0) | 2022.05.24 |
---|---|
220523 프론트엔드 부트캠프 15일차 : 이벤트 버블링, 라이브러리 사요요 (0) | 2022.05.24 |
antd 라이브러리, 리액트 플레이어 사용하기 (0) | 2022.05.23 |
구조 분해 할당(Destructuring Assignment) (0) | 2022.05.23 |
Conditional-rendering (0) | 2022.05.23 |