📢 공지사항
home

6주차 해설

태그
문자열
배열
종류
문제

진료 순서 정하기

외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요.
function solution(emergency) { var answer = []; // 여기서 slice()를 사용하지 않으면 원본 배열이 변경되어 제대로 동작하지 않음! var sorted = emergency.slice().sort((a, b) => b-a); for(let i = 0; i < emergency.length; i++){ answer.push(sorted.indexOf(emergency[i]) + 1); } return answer; }
JavaScript
복사
function solution(emergency) { let answer = []; // spread 문법으로 slice()와 동일하게 배열을 복사하는 동작 let sorted = [...emergency].sort((a,b)=>b-a); emergency.map((element, idx) => { answer.push(sorted.indexOf(element)+1); }) return answer; }
JavaScript
복사

영어가 싫어요

영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.

생각하기 쉬운 풀이

function solution(numbers) { const num = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]; for(let i = 0; i < num.length; i++){ //split을 num[i] 기준으로 자르고 잘린곳을 i로 메꿔줌 numbers = numbers.split(num[i]).join(i) } // number로 형 변환 return Number(numbers) }
JavaScript
복사

빠른 풀이 : 정규 표현식

function solution(numbers) { const obj = { zero: 0, one: 1, two: 2, three: 3, four: 4, five: 5, six: 6, seven: 7, eight: 8, nine: 9 }; const num = numbers.replace(/zero|one|two|three|four|five|six|seven|eight|nine/g, (v) => { return obj[v]; }); return Number(num); }
JavaScript
복사

빠른 풀이 : reduce + 인덱스

var solution=n=>Number(['zero','one','two','three','four','five','six','seven','eight','nine'].reduce((t,s,i)=>t.replaceAll(s,i),n))
JavaScript
복사

외계어 사전

PROGRAMMERS-962 행성에 불시착한 우주비행사 머쓱이는 외계행성의 언어를 공부하려고 합니다. 알파벳이 담긴 배열 spell과 외계어 사전 dic이 매개변수로 주어집니다. spell에 담긴 알파벳을 한번씩만 모두 사용한 단어가 dic에 존재한다면 1, 존재하지 않는다면 2를 return하도록 solution 함수를 완성해주세요.

생각하기 쉬운 풀이

function solution(spell, dic) { const isThere = []; dic.forEach((word) => { let count = 0; spell.forEach((item) => { if(word.includes(item)){ count += 1; } }) if(count === spell.length){ isThere.push(word); } }) return isThere.length === 0 ? 2 : 1; }
JavaScript
복사

빠른 풀이

function solution(p, d) { return d.some(s => p.sort().toString() == [...s].sort().toString()) ? 1 : 2; }
JavaScript
복사

문자열 밀기

문자열 "hello"에서 각 문자를 오른쪽으로 한 칸씩 밀고 마지막 문자는 맨 앞으로 이동시키면 "ohell"이 됩니다. 이것을 문자열을 민다고 정의한다면 문자열 A와 B가 매개변수로 주어질 때, A를 밀어서 B가 될 수 있다면 밀어야 하는 최소 횟수를 return하고 밀어서 B가 될 수 없으면 -1을 return 하도록 solution 함수를 완성해보세요.

생각하기 쉬운 풀이

// unshift() 메서드는 새로운 요소를 배열의 맨 앞쪽에 추가하고, 새로운 길이를 반환 function solution(A, B) { const arr = [...A]; for (let i=0,len=arr.length; i<len; i++) { if (arr.join('') === B) { return i; } arr.unshift(arr.pop()); } return -1; }
JavaScript
복사

빠른 풀이

let solution=(a,b)=>(b+b).indexOf(a)
JavaScript
복사

컨트롤 제트

숫자와 "Z"가 공백으로 구분되어 담긴 문자열이 주어집니다. 문자열에 있는 숫자를 차례대로 더하려고 합니다. 이 때 "Z"가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다. 숫자와 "Z"로 이루어진 문자열 s가 주어질 때, 머쓱이가 구한 값을 return 하도록 solution 함수를 완성해보세요.
function solution(s) { const numbers = [] for (const t of s.split(' ')) { if (t === 'Z') { numbers.pop() } else { numbers.push(t) } } return numbers.reduce((acc, v) => acc + +v, 0); }
JavaScript
복사
function solution(s) { const stack = [] s.split(' ').forEach((target) => { if(target === 'Z') stack.pop(); else stack.push(+target) }) return stack.length ? stack.reduce((pre, cur) => pre + cur) : 0; }
JavaScript
복사