문제 설명
왕비를 피해 일곱 난쟁이들과 함께 평화롭게 생활하고 있던 백설공주에게 위기가 찾아왔다. 일과를 마치고 돌아온 난쟁이가 일곱 명이 아닌 아홉 명이었던 것이다. 아홉 명의 난쟁이는 모두 자신이 "백설 공주와 일곱 난쟁이"의 주인공이라고 주장했다. 뛰어난 수학적 직관력을 가지고 있던 백설공주는, 다행스럽게도 일곱 난쟁이의 키의 합이 100이 됨을 기억해 냈다. 아홉 난쟁이의 키가 주어졌을 때, 백설공주를 도와 일곱 난쟁이를 찾는 프로그램을 작성하시오.
▣ 입력설명
아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.
▣ 출력설명
입력된 순서대로 일곱 난쟁이의 키를 출력한다.
input | output |
---|---|
20 7 23 19 10 15 25 8 13 | 20 7 23 19 10 8 13 |
풀이
✍️ solution
const findDwarfs = (people) => {
let findDwarfsCopy = people; // 얕은 복사는 똑같은 객체를 참조하므로
let total = people.reduce((a, b) => a + b, 0);
for (let i = 0; i < people.length; i++) {
for (let j = 1; j < people.length; j++) {
if (total - (people[i] + people[j]) === 100) {
findDwarfsCopy.splice(j, 1);
findDwarfsCopy.splice(i, 1);
return people;
}
}
}
};
reduce
로 배열의 총합을 구한다.문제 설명
대문자로 이루어진 영어단어가 입력되면 단어에 포함된 ‘A'를 모두 ’#‘으로 바꾸어 출력하는 프로그램을 작성하시오.
▣ 입력설명
첫 번째 줄에 문자열이 입력된다.
▣ 출력설명
첫 번째 줄에 바뀐 단어를 출력한다.
input | output |
---|---|
BANANA | B#N#N# |
풀이
const changeChar = (str) => {
changedStr = str.replace(/A/g, '#');
return changedStr;
};
const char = 'BANANA';
const result = changeChar(char);
console.log(result); // B#N#N#
📌 replace()로 문자열 치환
// ex)
let str = 'Hello world, Java';
str = str.replace('Java', 'JavaScript');
console.log(str); // Hello world, JavaScript
replace('A','B')
는 문자열에 있는 A를 B로 바꾼 문자열을 리턴한다. ✍️ solution
for of
를 사용해서 풀어보기 🧐
const solution = (s) => {
let answer = '';
for (let x of s) {
if (x === 'A') answer += '#';
else answer += x;
}
return answer;
};
let str = 'BANANA';
console.log(solution(str)); // B#N#N#
문제 설명
한 개의 문자열을 입력받고, 특정 문자를 입력받아 해당 특정문자가 입력받은 문자열에 몇 개 존재하는지 알아내는 프로그램을 작성하세요. 문자열의 길이는 100을 넘지 않습니다.
▣ 입력설명
첫 줄에 문자열이 주어지고, 두 번째 줄에 문자가 주어진다.
▣ 출력설명
첫 줄에 해당 문자의 개수를 출력한다.
input | output |
---|---|
COMPUTERPROGRAMMING, R | 3 |
풀이
const findChar = (str, char) => {
let count = 0;
for (x of str) {
if (x === char) {
count++;
}
}
return count;
};
const str = 'COMPUTERPROGRAMMING';
const char = 'R';
console.log(findChar(str, char)); // 3
for...of
를 사용해서 받아온 문자열에서 해당하는 알파벳을 찾아준다. ✍️ solution
split()
를 사용해서 풀어보기 🧐
const solution = (s, t) => {
let answer = s.split(t).length;
return answer - 1;
};
const str = 'COMPUTERPROGRAMMING';
console.log(solution(str, 'R')); // 3
t
를 구분자로 하여 배열형태로 나눠주는 특징을 사용한다.t
가 맨 뒤에 위치하더라도 마지막 배열은 [""]
와 같은 빈 문자열배열이 들어오므로 결과값은 동일하다! 😀✍️ 비슷한 문제
문제 설명
머쓱이는 학교에서 키 순으로 줄을 설 때 몇 번째로 서야 하는지 궁금해졌습니다. 머쓱이네 반 친구들의 키가 담긴 정수 배열 array와 머쓱이의 키 height가 매개변수로 주어질 때, 머쓱이보다 키 큰 사람 수를 return 하도록 solution 함수를 완성해보세요.
input | output |
---|---|
[149, 180, 192, 170], 167 | 3 |
[180, 120, 140], 190 | 0 |
풀이
const answer = (arr, height) => {
let count = 0;
for (x of arr) {
if (x > height) count++;
}
return count;
};
const arr = [149, 180, 192, 170];
const height = 167;
console.log(answer(arr, height)); // 3
const arr2 = [180, 120, 140];
const height2 = 190;
console.log(answer(arr2, height2)); // 0