본문 바로가기

항해99

[항해99]TIL_알고리즘3

반응형

문제1 : 문자열 내 p와 y의 개수


1.1 풀이

 - 대문자와 소문자가 섞여있기 때문에 toUpperCase()를 사용, 모두 대문자로 바꾼다.

 - split()을 통해 P 기준으로 문자열을 분해하고 그 길이를 계산한다. 

 - split()을 통해 Y 기준으로 문자열을 분해하고 그 길이를 계산한다.

- 삼항연산자를 통해 참 거짓을 출력한다.

function solution(s){
    return s.toUpperCase().split("P").length === s.toUpperCase().split("Y").length ?
        true : false
    
    }

1.2 다른 방법

function numPY(s){
  var result = true;
  s = s.toUpperCase();
  var num = 0;
  for(var i = 0; i < s.length; i++){
    if(s[i] === 'P') num++;
    if(s[i] === 'Y') num--;
  }
  result = (num === 0);

  return result;
}

 

 

문제2 : 수박수박수박수박수박수?


2.1 풀이

 - 삼항연산자, repeat()을 사용한다.

 - 입력값이 짝수이면 "수박"을 n/2 번 반복한다.

 - 입력값이 홀수면 "수박"을 n/2 번 반복한 뒤 "수"를 더해준다.

function solution(n) {
   return n % 2 === 0 ? "수박".repeat(n/2) : "수박".repeat(n/2)+"수";
}

2.2 다른방법

const waterMelon = n => "수박".repeat(n).slice(0,n);

console.log("n이 3인 경우: "+ waterMelon(3))
console.log("n이 4인 경우: "+ waterMelon(4))

 

문제3 : 자릿수 더하기


3.1 풀이

 -  N을 문자열로 바꾼뒤 ""을 기준으로 split해준다. 

 - ["1", "2", "3"]가 생성되는데 이를 reduce()로 누산한다.

 - 누산함수는 for문 처럼 일단 암기한다.

function solution(n)
{   let answer = n.toString().split("").reduce((acc,cur) => acc += parseInt(cur),0);
    return answer;
}

3.2 다른 풀이

function solution(n)
{
    var a = (n + '').split('');
    var b = 0;
    for(var i = 0; i < a.length; ++i) {
        b += parseInt(a[i]);
    }
    return b;
    //return n.toString().split('').reduce((a, b) => (a * 1) + (b * 1));
}

 

반응형

'항해99' 카테고리의 다른 글

[항해99]TIL_알고리즘5  (2) 2021.11.12
[항해99]TIL_알고리즘4  (1) 2021.11.11
[항해99]TIL_알고리즘2  (0) 2021.11.09
[항해99]TIL_알고리즘1  (0) 2021.11.08
JWT  (2) 2021.11.07