From bb490b6f4764d5f8c00be3fef482ed6c1c141a3f Mon Sep 17 00:00:00 2001 From: bongsee Date: Sat, 24 Dec 2022 10:06:59 +0900 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20Done=20=EC=98=B7=EA=B0=80=EA=B2=8C?= =?UTF-8?q?=ED=95=A0=EC=9D=B8=EB=B0=9B=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0_\352\263\240\353\264\211\354\204\235.md" | 78 +++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 "bongsee/lv0/day5/\354\230\267\352\260\200\352\262\214\355\225\240\354\235\270\353\260\233\352\270\260_\352\263\240\353\264\211\354\204\235.md" diff --git "a/bongsee/lv0/day5/\354\230\267\352\260\200\352\262\214\355\225\240\354\235\270\353\260\233\352\270\260_\352\263\240\353\264\211\354\204\235.md" "b/bongsee/lv0/day5/\354\230\267\352\260\200\352\262\214\355\225\240\354\235\270\353\260\233\352\270\260_\352\263\240\353\264\211\354\204\235.md" new file mode 100644 index 0000000..f548956 --- /dev/null +++ "b/bongsee/lv0/day5/\354\230\267\352\260\200\352\262\214\355\225\240\354\235\270\353\260\233\352\270\260_\352\263\240\353\264\211\354\204\235.md" @@ -0,0 +1,78 @@ +### 문제 설명 + +- 머쓱이네 옷가게는 10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 50만 원 이상 사면 20%를 할인해줍니다. + 구매한 옷의 가격 price가 주어질 때, 지불해야 할 금액을 return 하도록 solution 함수를 완성해보세요. + +--- + +### 제한사항 + +- 10 ≤ price ≤ 1,000,000 + - price는 10원 단위로(1의 자리가 0) 주어집니다. +- 소수점 이하를 버린 정수를 return합니다. + +--- + +### 입출력 예 + +| price | result | +| ------- | ------- | +| 150,000 | 142,500 | +| 580,000 | 464,000 | + +--- + +### 입출력 예 설명 + +- 입출력 #1 : 150,000원에서 5%를 할인한 142,500원을 return 합니다. +- 입출력 #2 : 580,000원에서 20%를 할인한 464,000원을 return 합니다. + +--- + +### 나의 풀이 + +```javascript +function solution(price) { + const level1 = 1 - 0.05; + const level2 = 1 - 0.1; + const level3 = 1 - 0.2; + if (price >= 500_000) { + return Math.floor(price * level3); + } else if (price >= 300_000) { + return Math.floor(price * level2); + } else if (price >= 100_000) { + return Math.floor(price * level1); + } else { + return price; + } +} +``` + +### 회고 + +- 조건이 여러개 달리기 때문에 switch문을 사용해보면 어떨까했다. +- switch문의 case 뒤에 오는 건 조건이 아니라 값이다. 즉, 조건이 와버리면 값으로 평가해버리기 때문에 Boolean 값으로 자동 형변환이 진행된다. +- 또한 switch문은 기준이 되는 값과 case뒤에 오는 값의 일치여부(일치 연산자 `===`)를 보기 때문에 아래의 코드는 내 의도와는 다르게 동작할 수 있다. + +```javascript +function solution(price) { + const level1 = 0.05; + const level2 = 0.1; + const level3 = 0.2; + switch (price) { + case price >= 500_000: + // "price가 price >= 500_000이라면" 으로 해석이 되는 것이 아니라, 'price >= 500_000'는 Boolean값으로 평가되기 때문에 'price === true라면', 또는 'price === false 라면' 으로 해석되는 것. + return price * (1 - level3); + case price >= 300_000: + return price * (1 - level2); + case price >= 100_000: + return price * (1 - level1); + } +} +``` + +- swicth문은 case 뒤에 오는 값을 하나로 특정지을 수 있고, 그 값을 기준값과 비교하려고 할 때 써야할 것 같다. +- 논외로 switch문 사용하면서 들었던 의문을 정리해본다. + - 함수 내부의 switch문에서 반복문의 종료로 return을 사용할 수 있다. + - 다만 break는 switch문만을 탈출하고 함수 내부의 흐름으로 넘어가는 반면, + - return을 사용할 경우 switch문을 탈출하는 것 뿐 아니라, switch문이 위치해있던 함수도 종료함으로써 함수를 호출했던 context로 실행 흐름이 넘어간다. From bf09cf990788024f319734b17c23784528681ba3 Mon Sep 17 00:00:00 2001 From: bongsee Date: Sat, 24 Dec 2022 10:19:36 +0900 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20Done=20=EC=95=84=EC=9D=B4=EC=8A=A4?= =?UTF-8?q?=EC=95=84=EB=A9=94=EB=A6=AC=EC=B9=B4=EB=85=B8=5F=EA=B3=A0?= =?UTF-8?q?=EB=B4=89=EC=84=9D.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0_\352\263\240\353\264\211\354\204\235.md" | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 "bongsee/lv0/day5/\354\225\204\354\235\264\354\212\244\354\225\204\353\251\224\353\246\254\354\271\264\353\205\270_\352\263\240\353\264\211\354\204\235.md" diff --git "a/bongsee/lv0/day5/\354\225\204\354\235\264\354\212\244\354\225\204\353\251\224\353\246\254\354\271\264\353\205\270_\352\263\240\353\264\211\354\204\235.md" "b/bongsee/lv0/day5/\354\225\204\354\235\264\354\212\244\354\225\204\353\251\224\353\246\254\354\271\264\353\205\270_\352\263\240\353\264\211\354\204\235.md" new file mode 100644 index 0000000..1834bc9 --- /dev/null +++ "b/bongsee/lv0/day5/\354\225\204\354\235\264\354\212\244\354\225\204\353\251\224\353\246\254\354\271\264\353\205\270_\352\263\240\353\264\211\354\204\235.md" @@ -0,0 +1,49 @@ +### 문제 설명 + +- 머쓱이는 추운 날에도 아이스 아메리카노만 마십니다. 아이스 아메리카노는 한잔에 5,500원입니다. 머쓱이가 가지고 있는 돈 money가 매개변수로 주어질 때, 머쓱이가 최대로 마실 수 있는 아메리카노의 잔 수와 남는 돈을 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요. + +--- + +### 제한사항 + +- 0 < money ≤ 1,000,000 + +--- + +### 입출력 예 + +| money | result | +| ------ | --------- | +| 5,500 | [1, 0] | +| 15,000 | [2, 4000] | + +--- + +### 입출력 예 설명 + +- 입출력 #1 : 5,500원은 아이스 아메리카노 한 잔을 살 수 있고 잔돈은 0원입니다. +- 입출력 #2 : 15,000원은 아이스 아메리카노 두 잔을 살 수 있고 잔돈은 4,000원입니다. + +--- + +### 나의 풀이 + +```javascript +function solution(money) { + const price = 5500; + const answer = []; + if (money % price === 0) { + // 돈이 5500의 배수일 때는 잔돈이 없다. + answer.push(money / price); + answer.push(0); + } else { + // 그렇지 않다면 잔돈을 출력한다. + const value = Math.floor(money / price); // value는 구입 가능한 갯수 + const rest = money - price * value; // rest는 구입 후 잔돈 + answer.push(value, rest); + } + return answer; +} +``` + +### 회고 From d08d7fbc46f4432d76a1ca8fe655fa149279f8df Mon Sep 17 00:00:00 2001 From: bongsee Date: Sat, 24 Dec 2022 10:23:39 +0900 Subject: [PATCH 3/4] =?UTF-8?q?feat:=20Done=20=EB=82=98=EC=9D=B4=EC=B6=9C?= =?UTF-8?q?=EB=A0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5_\352\263\240\353\264\211\354\204\235.md" | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 "bongsee/lv0/day5/\353\202\230\354\235\264\354\266\234\353\240\245_\352\263\240\353\264\211\354\204\235.md" diff --git "a/bongsee/lv0/day5/\353\202\230\354\235\264\354\266\234\353\240\245_\352\263\240\353\264\211\354\204\235.md" "b/bongsee/lv0/day5/\353\202\230\354\235\264\354\266\234\353\240\245_\352\263\240\353\264\211\354\204\235.md" new file mode 100644 index 0000000..628d0a1 --- /dev/null +++ "b/bongsee/lv0/day5/\353\202\230\354\235\264\354\266\234\353\240\245_\352\263\240\353\264\211\354\204\235.md" @@ -0,0 +1,39 @@ +### 문제 설명 + +- 머쓱이는 40살인 선생님이 몇 년도에 태어났는지 궁금해졌습니다. 나이 age가 주어질 때, 2022년을 기준 출생 연도를 return 하는 solution 함수를 완성해주세요. + +--- + +### 제한사항 + +- 0 < age ≤ 120 +- 나이는 태어난 연도에 1살이며 1년마다 1씩 증가합니다. + +--- + +### 입출력 예 + +| age | result | +| --- | ------ | +| 40 | 1983 | +| 23 | 2000 | + +--- + +### 입출력 예 설명 + +- 입출력 #1 : 2022년 기준 40살이므로 1983년생입니다. +- 입출력 #2 : 2022년 기준 23살이므로 2000년생입니다. + +--- + +### 나의 풀이 + +```javascript +function solution(age) { + criteria = 2022; + return criteria - age + 1; +} +``` + +### 회고 From f58c3c85cdfef1d2ba6b988238c1e29f5ed5956c Mon Sep 17 00:00:00 2001 From: bongsee Date: Sat, 24 Dec 2022 10:33:35 +0900 Subject: [PATCH 4/4] =?UTF-8?q?feat:=20Done=20=EB=B0=B0=EC=97=B4=EB=92=A4?= =?UTF-8?q?=EC=A7=91=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0_\352\263\240\353\264\211\354\204\235.md" | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 "bongsee/lv0/day5/\353\260\260\354\227\264\353\222\244\354\247\221\352\270\260_\352\263\240\353\264\211\354\204\235.md" diff --git "a/bongsee/lv0/day5/\353\260\260\354\227\264\353\222\244\354\247\221\352\270\260_\352\263\240\353\264\211\354\204\235.md" "b/bongsee/lv0/day5/\353\260\260\354\227\264\353\222\244\354\247\221\352\270\260_\352\263\240\353\264\211\354\204\235.md" new file mode 100644 index 0000000..9913b8f --- /dev/null +++ "b/bongsee/lv0/day5/\353\260\260\354\227\264\353\222\244\354\247\221\352\270\260_\352\263\240\353\264\211\354\204\235.md" @@ -0,0 +1,47 @@ +### 문제 설명 + +- 정수가 들어 있는 배열 num_list가 매개변수로 주어집니다. num_list의 원소의 순서를 거꾸로 뒤집은 배열을 return하도록 solution 함수를 완성해주세요. + +--- + +### 제한사항 + +- 1 ≤ num_list의 길이 ≤ 1,000 +- 0 ≤ num_list의 원소 ≤ 1,000 + +--- + +### 입출력 예 + +| num_list | result | +| --------------------- | --------------------- | +| [1, 2, 3, 4, 5] | [5, 4, 3, 2, 1] | +| [[1, 1, 1, 1, 1, 2] | [2, 1, 1, 1, 1, 1] | +| [1, 0, 1, 1, 1, 3, 5] | [5, 3, 1, 1, 1, 0, 1] | + +--- + +### 입출력 예 설명 + +- 입출력 #1 : num_list가 [1, 2, 3, 4, 5]이므로 순서를 거꾸로 뒤집은 배열 [5, 4, 3, 2, 1]을 return합니다. +- 입출력 #2 : num_list가 [1, 1, 1, 1, 1, 2]이므로 순서를 거꾸로 뒤집은 배열 [2, 1, 1, 1, 1, 1]을 return합니다. + +--- + +### 나의 풀이 + +```javascript +function solution(num_list) { + let answer = []; + while (num_list.length !== 0) { + answer.push(num_list.splice(-1)[0]); + } + return answer; +} +``` + +### 회고 + +- Array.prototype.splice() 메서드의 return 값은 잘라낸 요소로 만든 배열이다. +- Array.prototype.splice() 메서드는 원본 배열을 직접 변경하는 부수효과가 있는 메서드이다. +- 배열에 배열을 push하면 당연하게도 이차원 배열이 만들어진다.(뭐랑 헷갈리는거지?)