Miyeon

문제40 : 놀이동산에 가자

2021-03-07Algorithm

🔥 제한 몸무게를 고려해서 몇 명이 탈 수 있는지 구하기 🔥

입력 받는 순서 : 제한 몸무게 > 사람수 > 차례대로 탑승할 사람들의 몸무게

몸무게는 무작위로 주어짐

입력 :
50
5
20
20
20
20
20

출력 : 2

나의 접근법

  • 입력받은 개인의 몸무게를 weightList에 추가하기
  • 탑승 가능 몸무게 변수 만들기
  • 몸무게 배열 요소와 제한 몸무게를 비교하기

    • 제한 몸무게보다 작으면 탑승 가능 몸무게 변수에 추가
    • 제한 몸무게는 그 만큼 감소시킴
  • 탑승 가능 몸무게 변수의 길이 리턴함
const weightLimit = prompt("제한 몸무게를 입력하시오");
const peopleNum = prompt("인원수를 입력하시오");
const individualWeight = 40;
const weightList = [];
const allowedWeightList = [];

for (let i = 0; i < peopleNum; i++) {
  weightList.push(individualWeight);
}

for (let i = 0; i < weightList.length; i++) {
  if (weightList[i] < weightLimit) {
    allowedWeightList.push(weightList[i]);
    weightLimit = weightLimit - weightList[i];
  }
}

const allowedPersonNum = allowedWeightList.length;
console.log("allowedPersonNum", allowedPersonNum);

또 다른 접근법

let total = 0;
let count = 0;
const limit = prompt("제한 몸무게를 입력하세요.");
const n = prompt("인원수를 입력하세요.");

for (let i = 1; i <= n; i++) {
  total += parseInt(prompt("무게를 입력해주세요"), 10);
  if (total <= limit) {
    count = i;
  }
}

console.log(count);

WILT : What I Learned Today 🤔

  • 원하는 값이 나오길래 문자열로 입력받은 값을 숫자로 변환하지 않고 그대로 진행했다. 그런데 데이터 타입을 고려하면서 코드를 짜는 게 더 좋은 습관이라는 생각이 들었다. 강제변환 고려하지 말고 데이터타입 더 명확하게 관리해야겠다.
  • 프로그램속에서 꼭 필요한 정보(몸무게의 합계, 탈 수 있는 사람의 숫자)를 고려해서 코드를 더 쉽고 간단하게 짜는 연습을 해야겠다