addDash('seoullaarizona') // 'seoul-la-arizona'
addDash('toasttoasttoast') // 'toast-toast-toast'
function addDash(str) {
// 여기에서 작업하세요.
let result = str[0];
for (let i = 1; i < str.length; i++) {
if (str[i] === str[i - 1]) {
result += "-" + str[i];
} else {
result += str[i];
}
}
return result;
}
function addDash(str) {
let result = str[0]
for(let i=1; i<str.length; i++) {
if(str[i-1] === str[i]) result += '-'
result += str[i]
}
return result
}
숫자가 담긴 배열 childs가 주어집니다.
모든 집에 한 명씩의 아이가 살고 있는 동네가 있습니다.
아이들은 올해 몇 개의 착한일을 했는지에 따라 곧 다가오는 크리스마스에 선물을 받게 됩니다.
childs 배열에는 각 아이들이 올해 몇번의 착한 일을 했는지, 그 숫자가 담겨 있습니다.
모든 아이가 아래 주어진 조건에 맞춰 올바른 개수의 선물을 받을 수 있도록 준비해야 합니다.
각 아이들은 최소 하나의 선물은 받아야 합니다.
이웃하고 있는 아이보다 착한 일을 더 많이 한 아이는 이웃한 아이보다는 더 많은 선물을 받아야 합니다.
산타가 조건에 맞춰 아이들에게 선물을 나눠줄 때, 최소 몇개의 선물이 필요한지 그 개수를 리턴해 주세요.
christmasPresent([1, 0, 2]) // 5
christmasPresent([1, 2, 2]) // 4
const christmasPresent = function (childs) {
// 여기에서 작업하세요.
let present = [];
for (let i = 0; i < childs.length; i++) {
present.push(1);
}
for (let i = 1; i < childs.length; i++) {
if (childs[i] > childs[i - 1]) {
present[i] = present[i - 1] + 1;
}
}
for (let i = childs.length - 1; i >= 0; i--) {
if (childs[i] > childs[i + 1] && present[i] <= present[i + 1]) {
present[i] = present[i + 1] + 1;
}
}
console.log(present);
let result = 0;
for (let i = 0; i < present.length; i++) {
result += present[i];
}
return result;
};
const christmasPresent = function (childs) {
// 여기에서 작업하세요.
const temp = new Array(childs.length).fill(1);
const [left, right] = [[...temp], [...temp]];
for (
let i = 0, j = childs.length - 1;
i < childs.length && j >= 0;
i++, j--
) {
if (childs[i] > childs[i - 1]) left[i] = left[i - 1] + 1;
if (childs[j] > childs[j + 1]) right[j] = right[j + 1] + 1;
}
return left.reduce((acc, cur, idx) => {
return acc + Math.max(cur, right[idx]);
}, 0);
};
domain(['100 codebootcamp.co.kr', '50 naver.co.kr', '1 co.kr']) // ['100 codebootcamp.co.kr', '50 naver.co.kr', '151 co.kr', '151 kr']
domain(['900 google.mail.com', '50 naver.com', '1 intel.mail.com', '5 wiki.org']) // ['901 mail.com', '50 naver.com', '900 google.mail.com', '5 wiki.org', '5 org', '1 intel.mail.com', '951 com']
function domain(domainList) {
// domain의 방문수를 누적, 체크하기 위한 객체
let count = {};
domainList.forEach(( dm ) => {
// 방문수와 domain을 분리
const [ visits, domains ] = dm.split(' ')
const subDomains = domains.split('.')
// 각 n차 domain을 분리해 while문에 적용
while( subDomains.length ) {
// 최하위 도메인부터 차례대로 체크
const sub = subDomains.join('.')
// count 객체에 해당 domain이 존재한다면 visits 증가, 아니라면 추가
count[sub] = count[sub] ? (Number(count[sub]) + Number(visits)) : visits;
// 확인이 끝난 도메인 제거 후 반복
subDomains.shift()
}
})
// 계산이 끝난 domain 목록을 배열에 담기
const result = []
for(let key in count) {
result.push(`${count[key]} ${key}`)
}
return result;
}
rotateString('abcde', 'deabc') // true
rotateString('abcde', 'cdeba') // false
function rotateString(str, goal) {
// 여기에서 작업하세요.
if (str.length !== goal.length) {
return false;
}
for (let i = 0; i < str.length; i++) {
if (str === goal) {
return true;
}
str = str[str.length - 1] + str.slice(0, str.length - 1);
}
return false;
}
function rotateString(str, goal) {
// 여기에서 작업하세요.
for (let word of str) {
str = str.slice(1) + word;
if (str === goal) return true;
}
return false;
}
function rotateString(str, goal) {
// 여기에서 작업하세요.
const goalCheck = (goal + goal).includes(str);
return goalCheck && str.length === goal.length;
}
출처: 코드캠프