[프로그래머스]Algorithm_23.03.29

윤성해·2023년 3월 29일
0

알고리즘

목록 보기
11/22
post-thumbnail

💡 .toLowerCase, .toUpperCase, .split().join

문자열 내 p와 y의 개수

문제

레퍼런스

1.

function solution(s){
    let p = 0; //알파벳 p의 개수를 담는 변수
    let y = 0; //알파벳 y의 개수를 담는 변수
    
    for (let i = 0; i<s.length; i++){
        if (s[i] === "p" || s[i] ==="P"){
            p++; //하나가 증가 라는 뜻
        } else if(s[i] ==="y" || s[i]==="Y"){
            y++;
        }
    }
    return p === y
}

2. toLowerCase

function solution(s){
    s = s.toLowerCase();
    let p = 0; //알파벳 p의 개수를 담는 변수
    let y = 0; //알파벳 y의 개수를 담는 변수
    
    for (let i = 0; i<s.length; i++){
        if (s[i] === "p" ){
            p++; //하나가 증가 라는 뜻
        } else if(s[i] ==="y" ){
            y++;
        }
    }
    return p === y
}

3. 객체를 이용해서 어떤 데이터든 동적으로 저장

function solution(s){
    s=s.toLowerCase();
   const obj = {};
    
    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
}

위처럼 하면 불필요한 변수가 줄어든다. 객체안에 100개든 1000개든 담을 수 있어서 더 안정성이 있다. 조건문 잘 보기. 언디파인 이라면,,!

4.메서드 split

function solution(s){
    s=s.toLowerCase();
    
   return s.split("p").length - 1 === s.split("y").length -1;    
    //문자열을 배열로 만들 때 split("")썼었음. 안에 어떤 기준으로 쪼갤지 결정해주면 된다.
}


split 사용 방법 참고..!


이상한 문자 만들기

문제


단어별로 인덱스 나누기

레퍼런스

1. for문

function solution(s) {
    let answer = '';
    
    let idx = 0; //전체 인덱스가 아닌, 단어별로의 인덱스를 저장하는 변수
    for(let i =0; i<s.length;i++){
        
        answer += idx % 2 === 0 ? s[i].toUpperCase() : s[i].toLowerCase();
            
        if (s[i] === " ") {
            //공백일 경우 , idx를 0으로 초기화
            idx = 0;
            
        }else {
            //공백이 아닐경우 idx를 카운트한다
            idx++;
        }
    }
    return answer
}

2.메서드 .join(별개의 인덱스 만드는 방법)

function solution(s) {
   return s.split(" ") //문자열마다 서로 다른 인덱스값을 가지게 된다.
           .map(words =>{
       return words.split("") //이중배열 형태가 출력된다. 맵이 돌리는게 배열이었으니까.
       
                   .map((letter, i) =>{
           return i % 2 === 0 ? letter.toUpperCase : letter.toLowerCase
       }).join("")
   }).join("")
}



join 참고

profile
Slow and steady wins the race.

0개의 댓글