반응형
문제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 |