대문자와 소문자가 섞여있는 문자열 s가 주어짐. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성해야함. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않음.
예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return.
function solution(s){
var answer = true;
let NumOfP = 0;
let NumOfY = 0;
s = s.toLowerCase();
for(let i = 0; i < s.length; i++) {
if(s[i] === 'p')
NumOfP += 1;
else if(s[i] === 'y')
NumOfY += 1;
}
answer = (NumOfP === NumOfY) ? true : false;
return answer;
}
일단 대문자 소문자가 섞여있으므로 문자열 전부를 대문자 혹은 소문자로 바꿔주는 작업을 해야 더 간단하게 풀이가 가능하다고 생각. 문자열을 전부 다 소문자로 바꿔줌. 그리고 반복문을 통해 p가 발견되면 p의 개수에 +1, y가 발견되면 y의 개수에 +1을 해줌. 마지막으로 삼항 연산자를 통해서 NumOfP와 NumOfY가 같으면 true 반환, 다르면 false 반환.
s.toUpperCase().split("P").length === s.toUpperCase().split("Y").length;
배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 함. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면
배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성.
commands 형식 : [[2, 5, 3], [4, 4, 1], [1, 7, 3]]
function solution(array, commands) {
var answer = [];
let temporary = [];
for(let i = 0; i < commands.length; i++) {
temporary = array.slice((commands[i][0]-1), commands[i][1]);
temporary.sort((a,b) => a - b); // 가장 애먹은 부분
answer[i] = temporary[(commands[i][2]-1)];
}
return answer;
}
temporary.sort((a,b) => a - b); // 오름차순
,temporary.sort((a,b) => b - a); // 내림차순