Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions bongsee/lv0/day5/나이출력_고봉석.md
Original file line number Diff line number Diff line change
@@ -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;
}
```

### 회고
47 changes: 47 additions & 0 deletions bongsee/lv0/day5/배열뒤집기_고봉석.md
Original file line number Diff line number Diff line change
@@ -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하면 당연하게도 이차원 배열이 만들어진다.(뭐랑 헷갈리는거지?)
49 changes: 49 additions & 0 deletions bongsee/lv0/day5/아이스아메리카노_고봉석.md
Original file line number Diff line number Diff line change
@@ -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;
}
```

### 회고
78 changes: 78 additions & 0 deletions bongsee/lv0/day5/옷가게할인받기_고봉석.md
Original file line number Diff line number Diff line change
@@ -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로 실행 흐름이 넘어간다.