진료 순서 정하기
💡 외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 `emergency`가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요.
function solution(emergency) {
var answer = [];
var Rcopy=[];
for(var a=0;a<emergency.length;a++){
Rcopy[a]=emergency[a];
}
emergency.sort((a,b)=>b-a);
for(var i=0;i<Rcopy.length;i++){
for(var j=0;j<emergency.length;j++){
if(Rcopy[i]==emergency[j]){
answer[i]=j+1;
break;
}
}
}
return answer;
}
영어가 싫어요
💡 영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 `numbers`가 매개변수로 주어질 때, `numbers`를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.
function solution(numbers) {
var answer = '';
var a=[];
var str=[];
var alpha=["zero","one","two","three","four","five","six","seven","eight","nine"];
while(numbers!=''){
for(var j=0;j<10;j++){
if(numbers.substring(0,3)==alpha[j]){
answer=answer.concat(j);
numbers=numbers.replace(alpha[j],'');
continue;
}
else if(numbers.substring(0,4)==alpha[j]){
answer=answer.concat(j);
numbers=numbers.replace(alpha[j],'');
continue;
}
else if(numbers.substring(0,5)==alpha[j]){
answer=answer.concat(j);
numbers=numbers.replace(alpha[j],'');
continue;
}
}
}
return Number(answer);
}
외계어 사전
💡 PROGRAMMERS-962 행성에 불시착한 우주비행사 머쓱이는 외계행성의 언어를 공부하려고 합니다. 알파벳이 담긴 배열 `spell`과 외계어 사전 `dic`이 매개변수로 주어집니다. `spell`에 담긴 알파벳을 한번씩만 모두 사용한 단어가 `dic`에 존재한다면 1, 존재하지 않는다면 2를 return하도록 solution 함수를 완성해주세요.
function solution(spell, dic) {
var answer = 0;
var count=0;
for(var i=0;i<dic.length;i++){
for(var j=0;j<spell.length;j++){
if(dic[i].indexOf(spell[j])>=0)count++;
else break;
}
if(count==spell.length){
return 1;
}
count=0;
}
answer=2;
return answer;
}
문자열 밀기
💡 문자열 "hello"에서 각 문자를 오른쪽으로 한 칸씩 밀고 마지막 문자는 맨 앞으로 이동시키면 "ohell"이 됩니다. 이것을 문자열을 민다고 정의한다면 문자열 `A`와 `B`가 매개변수로 주어질 때, `A`를 밀어서 `B`가 될 수 있다면 밀어야 하는 최소 횟수를 return하고 밀어서 `B`가 될 수 없으면 -1을 return 하도록 solution 함수를 완성해보세요.
#내가 작성한 코드 : 왜 자꾸 한 사례가 틀리는지는 모르겟지만 나중에 해결하도록 하겠다.
function solution(A, B) {
var answer = 0;
var copy;
var Rcount=0,Lcount=0;
var Acpy=A;
var rAck=0, lAck=0;
if(A===B) return 0;
A=A.split('');
Acpy=Acpy.split('');
for(var i=0;i<A.length-1;i++){
copy= A[0];
A.shift();
A=A.concat(copy);
Rcount++;
if(A.join('')===B){ rAck=1; break;}
}
for(var i=0;i<Acpy.length-1;i++){
copy= Acpy[Acpy.length-1];
Acpy.unshift(copy);
Acpy.pop(copy);
Lcount++;
if(Acpy.join('')===B) {lAck=1; break;}
}
if(Rcount>=Lcount && (rAck===1 || lAck===1))answer=Lcount;
else if(Rcount<=Lcount && (rAck===1 || lAck===1))answer=Rcount;
else if(rAck===0 && lAck===0) answer=-1;
return answer;
}
#정답코드
function solution(A, B) {
if (A.length !== B.length) {
return -1;
}
let count = 0;
while (A !== B) {
A = A.slice(-1) + A.slice(0, -1); // 문자열을 오른쪽으로 한 칸씩 밀기
count++;
if (count > A.length) {
// 모든 경우를 다 확인했는데도 B를 만들 수 없는 경우
return -1;
}
}
return count;
}
컨트롤 제트
💡 숫자와 "Z"가 공백으로 구분되어 담긴 문자열이 주어집니다. 문자열에 있는 숫자를 차례대로 더하려고 합니다. 이 때 "Z"가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다. 숫자와 "Z"로 이루어진 문자열 `s`가 주어질 때, 머쓱이가 구한 값을 return 하도록 solution 함수를 완성해보세요.
function solution(s) {
var answer = 0;
s=s.split(' ');
for(var i=0;i<s.length;i++){
if(s[i] =='Z'){
answer-=parseInt(s[i-1]);
}
else{
answer+=parseInt(s[i]);
}
}
return answer;
}