seunghyun Note

알고리즘&자료구조 스터디 2주차(실습) 본문

스터디/알고리즘 & 자료구조

알고리즘&자료구조 스터디 2주차(실습)

승숭슝현 2024. 1. 5. 09:42

☺︎ Problem Solving 적용하기

💪🏻 Problem Solving을 통해 문제를 코딩 테스트 문제를 해결해보자!

🙃 문제 설명

머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한잔에 5,500원입니다. 머쓱이가 가지고 있는 돈 money가 매개변수로 주어질 때, 머쓱이가 최대로 마실 수 있는 아메리카노의 잔 수와 남는 돈을 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.

문제를 해결할 때에 5가지 방법으로 접근해서 문제 해결 고고씽

🔑 understand the problem : 문제에 대해 이해하기
🔑 Explore concrete Examples : 각 예시들을 탐구하기.
🔑 Break it Down : 분석하기. (문제에 대한 단계들을 실제로 수행하면서 작성)
🔑 Solve/Simplify : 문제를 해결하고 단순화하기.
🔑 Look Back and Refactor : 회고와 리팩터링하기. (개발자들에게 있어서 가장 중요한 단계)

🔑 Understand the Problem : 문제에 대해 이해하기

/*
Problem solving - step 1 : Understand the Problem : 문제에 대해 이해하기


1. Can I restate the the problems in my own words?
"Find the quotient and remainder"
"몫과 나머지를 구하자!"
2. what are the inputs that go into the problem?
0 < money ≤ 1,000,000

3. what are the outputs that should come from the solution to the problem?
0 < money ≤ 1,000,000

4. Can the outputs be determined from the inputs?
 " ㅆ ㄱ ㄴ "
5. How should I label the important pieces of data that are a part of the problem?
*/

🔑 Explore Examples : 각 예시들을 탐구하기

//Problem solving - step 2 :Explore Concrete Examples : 각 예시들을 탐구하기
//1. 간단한 예시로 시작 🛫
solution(5500); // [1, 0]
//2. 더 복잡한 예시들로 진행.
solution(15000); // [2,4000]

//3. 빈 입력값이 있는 예제를 살펴보기
solution(""); // 실행이 안된다.
//4. 사용자가 유효하지 않은 값을 입력하면 어떻게 될지 살펴보기
solution('ㅁ'); //실행이 안된다.

🔑 Break it Down! : 분석하기

//Problem solving - step 3 :break it Down : 분석하기 🤔
function solution(money) {
  // do something
  // 저장할 새로운 배열을 만든다.
  // 잔수와 남는 돈을 순서대로 저장할수 있게 0번째 : 잔수 1번째 : 남는돈으로 저장할 수 있게 설정
      // 0 index에는 나누기 연산자를 사용해 정수형을 저장한다.
      // 1 index에는 나머지 연산자를 사용해 정수형으로 저장한다.
  // return하기
}

🔑 Solving / Simplify : 문제를 해결하고 단순화하기

//Problem solving - step 4 : Solving & Simplify : 문제를 해결하고 단순화하기.
function solution(money) {
    // do something
  // 저장할 새로운 배열을 만든다.
    var answer = [];
    // 잔수와 남는 돈을 순서대로 저장할수 있게 0번째 : 잔수 1번째 : 남는돈으로 저장할 수 있게 설정
  // push 를 사용해 index 순서에 맞게 적용 시키기!
      answer.push(parseInt(money/5500));
    answer.push(money%5500);
  //return object at end...!
    return answer;
}

🔑 Look Back & Refactor

  • look Back : 내가 처음에 작성했던 코드는 push를 이용해 index에 넣는 방식이였는데 코드를 작성하게 되면 길이가 비교적 길다.
  • refactor : return 에 바로 몫과 나머지를 반환할수있게 간단하게 적용시키기
    // 더 간단하게....! 
    // math.floor 를 사용하여 바로 return으로 반환시킨다.
    function solution(money) {
    // 코드의 가독성과 간결성을 증가시킴.
      return [Math.floor(money / 5500), money % 5500];
    }

💻 Source

728x90