728x90
문제
저기 징검다리가 보이지? 내 친구들이 징검다리를 건널거야! 하지만 징검다리는 버틸수 있는 내구도가 한계가 있지! 내 친구들의 몸무게, 돌의 내구도, 친구들의 점프력을 고려하여 내 친구 루비독, 피치피독, 씨-독, 코볼독이 각각 다리를 건널 수 있는지 알아봐줘! 친구들은 더 추가 될 수도, 덜 건널 수도 있어!
-
각 돌들이 얼마나 버틸수 있는지 배열로 주어집니다. (내구도 0까지는 독의 몸무게를 버틸 수 있습니다. 0미만이 되면 독은 살아남지 못합니다.)
-
각 독들의 개인정보가 JSON(JSON은 큰 따옴표로 묶여야 합니다. 가능하다면 json을 import하여 풀어보세요!)으로 주어집니다. 개인정보는 보호되지 않습니다.
-
각 돌에 독들이 착지할 때 돌의 내구도는 몸무게만큼 줄어듭니다. ex) [1,2,1,4] 각 돌마다 몸무게 1인 독 1마리 2마리 1마리 4마리의 착지를 버틸 수 있습니다.
-
독들의 점프력이 각자 다릅니다. ex) 점프력이 2라면 2칸씩 점프하여 착지합니다.
-
각 독들은 순서대로만 다리를 건넙니다.
입력
돌의내구도 = [1, 2, 1, 4]
독 = [{
"이름" : "루비독",
"나이" : "95년생",
"점프력" : "3",
"몸무게" : "4",
},{
"이름" : "피치독",
"나이" : "95년생",
"점프력" : "3",
"몸무게" : "3",
},{
"이름" : "씨-독",
"나이" : "72년생",
"점프력" : "2",
"몸무게" : "1",
},{
"이름" : "코볼독",
"나이" : "59년생",
"점프력" : "1",
"몸무게" : "1",
},
]
출력
생존자 : ['씨-독']
입력
돌의내구도 = [5, 3, 4, 1, 3, 8, 3]
독 = [{
"이름" : "루비독",
"나이" : "95년생",
"점프력" : "3",
"몸무게" : "4",
},{
"이름" : "피치독",
"나이" : "95년생",
"점프력" : "3",
"몸무게" : "3",
},{
"이름" : "씨-독",
"나이" : "72년생",
"점프력" : "2",
"몸무게" : "1",
},{
"이름" : "코볼독",
"나이" : "59년생",
"점프력" : "1",
"몸무게" : "1",
},
]
출력
생존자 : ['루비독', '씨-독']
문법
while문 : while문은 조건문이 참일 때 실행되는 반복문이다. 조건은 문장안이 실행되기 전에 참, 거짓을 판단한다.
var n = 0;
var x = 0;
while (n < 3) {
n++;
x += n;
}
break : 현재 반복문,switch문, 또는label문을 종료하고, 그 다음 문으로 프로그램 제어를 넘깁니다.
let i = 0;
while (i < 6) {
if (i === 3) {
break;
}
i = i + 1;
}
console.log(i);
// expected output: 3
continue : 문은 현재 또는 레이블이 지정된 루프의 현재 반복에서 명령문의 실행을 종료하고 반복문의 처음으로 돌아가여 루프문의 다음 코드를 실행합니다.
let text = '';
for (let i = 0; i < 10; i++) {
if (i === 3) {
continue;
}
text = text + i;
}
console.log(text);
// expected output: "012456789"
문제풀이
const 내구도 = [1, 2, 1, 4];
const 독 = [{
"이름" : "루비독",
"나이" : "95년생",
"점프력" : "3",
"몸무게" : "4",
},{
"이름" : "피치독",
"나이" : "95년생",
"점프력" : "3",
"몸무게" : "3",
},{
"이름" : "씨-독",
"나이" : "72년생",
"점프력" : "2",
"몸무게" : "1",
},{
"이름" : "코볼독",
"나이" : "59년생",
"점프력" : "1",
"몸무게" : "1",
},
];
function 징검다리를건너라(내구도, 독){
let answer = [];
for (let 개별독 of 독){
let 독의위치 = 0;
let 실패 = false;
while(독의위치 < 내구도.length){
독의위치 += parseInt(개별독['점프력'], 10);
내구도[독의위치 - 1] -= parseInt(개별독['몸무게'], 10);
if(내구도[독의위치 - 1] < 0){
실패 = true;
break
}
}
if(!실패){
answer.push(개별독['이름']);
}
}
return answer
}
징검다리를건너라(내구도, 독);
728x90
'② 심화 > 알고리즘' 카테고리의 다른 글
알고리즘 필수 개념과 메서드 (프로그래머스 레벨 1) (0) | 2021.03.14 |
---|---|
프론트엔드 개발자 테스트 과제형 주요 포인트 (0) | 2021.03.06 |
[페이지교체알고리즘] 자리를 양보해가며! (0) | 2020.10.11 |
[시간연산] 섬으로 가라! (0) | 2020.10.09 |
[En-Coding,이진연산] 암호를 해독하라! (0) | 2020.10.06 |