출처 : YBM

 

#문제1
A 학교에서는 단체 티셔츠를 주문하기 위해 학생별로 원하는 티셔츠 사이즈를 조사했습니다. 선택할 수 있는 티셔츠 사이즈는 작은 순서대로 "XS", "S", "M", "L", "XL", "XXL" 총 6종류가 있습니다.

학생별로 원하는 티셔츠 사이즈를 조사한 결과가 들어있는 리스트 shirt_size가 매개변수로 주어질 때, 사이즈별로 티셔츠가 몇 벌씩 필요한지 가장 작은 사이즈부터 순서대로 리스트에 담아 return 하도록 solution 함수를 완성해주세요.

---
##### 매개변수 설명
학생별로 원하는 사이즈를 조사한 결과가 들어있는 리스트 shirt_size가 solution 함수의 매개변수로 주어집니다.
* shirt_size 의 길이는 1 이상 100 이하입니다.
* shirt_size 에는 치수를 나타내는 문자열 "XS", "S", "M",  `"L", "XL", "XXL" 이 들어있습니다.

---
##### return 값 설명
티셔츠가 사이즈별로 몇 벌씩 필요한지 가장 작은 사이즈부터 순서대로 리스트에 담아 return 해주세요.
* return 하는 리스트에는 [ "XS" 개수, "S" 개수, "M" 개수, "L" 개수, "XL" 개수, "XXL" 개수] 순서로 들어있어야 합니다.

---
##### 예시

| shirt_size                       | return        |
|----------------------------------|---------------|
| ["XS", "S", "L", "L", "XL", "S"] | [1, 2, 0, 2, 1, 0] |

##### 예시 설명
* "XS"와 "XL"은 각각 한 명씩 신청했습니다.
* "S"와 "L"은 각각 두 명씩 신청했습니다.
* "M"과 "XXL"을 신청한 학생은 없습니다.

따라서 순서대로 [1, 2, 0, 2, 1, 0]을 리스트에 담아 return 하면 됩니다.


#문제2
A 쇼핑몰에서는 회원 등급에 따라 할인 서비스를 제공합니다.
회원 등급에 따른 할인율은 다음과 같습니다.
(S = 실버, G = 골드, V = VIP)

| 등급     | 할인율 |
|----------|--------|
| "S" | 5%     |
| "G"   | 10%    |
| "V"    | 15%    |

상품의 가격 price와 구매자의 회원 등급을 나타내는 문자열 grade가 매개변수로 주어질 때, 할인 서비스를 적용한 가격을 return 하도록 solution 함수를 완성해주세요.

---

#####매개변수 설명
상품의 가격 price와 회원 등급 grade가 매개변수로 주어집니다.
* price는 100 이상 100,000 이하의 100단위 자연수입니다.
* grade는 "S", "G", "V" 세 가지 중 하나입니다.

---

#####return 값 설명
할인한 가격을 return 하도록 solution 함수를 작성해주세요.

---

#####예시

| price | grade    | return |
|-------|----------|--------|
| 2500  | "V"    | 2125   |
| 96900 | "S" | 92055  |

##### 예시 설명
예시 #1
2500원의 15%는 375원 입니다. 2500 - 375 = 2125 입니다.

예시 #2
96900원의 5%는 4845원 입니다. 96900 - 4845 = 92055 입니다.


#문제3
시작 날짜와 끝 날짜가 주어질 때, 두 날짜가 며칠만큼 떨어져 있는지(D-day)를 구하려 합니다. 이를 위해 다음과 같이 3단계로 간단히 프로그램 구조를 작성했습니다. (단, 윤년은 고려하지 않습니다.)

~~~
1단계. 시작 날짜가 1월 1일로부터 며칠만큼 떨어져 있는지 구합니다.
2단계. 끝 날짜가 1월 1일로부터 며칠만큼 떨어져 있는지 구합니다.
3단계. (2단계에서 구한 날짜) - (1단계에서 구한 날짜)를 구합니다.
~~~

시작 날짜의 월, 일을 나타내는 start_month, start_day, 끝 날짜의 월, 일을 나타내는 end_month, end_day가 매개변수로 주어질 때, 시작 날짜와 끝 날짜가 며칠만큼 떨어져 있는지 return 하도록 solution 함수를 작성했습니다. 이때, 위 구조를 참고하여 중복되는 부분은 func_a라는 함수로 작성했습니다. 코드가 올바르게 동작할 수 있도록 빈칸을 알맞게 채워주세요.

---
##### 매개변수 설명
시작 날짜의 월, 일을 나타내는 start_month, start_day, 끝 날짜의 월, 일을 나타내는 end_month, end_day가 solution 함수의 매개변수로 주어집니다.

* 잘못된 날짜가 주어지는 경우는 없습니다.
* 끝 날짜는 항상 시작 날짜보다 뒤에 있는 날이 주어집니다.
* 끝 날짜가 다음 해로 넘어가는 경우는 주어지지 않습니다.
  * 즉, start_month <= end_month를 항상 만족합니다.
  * start_month = end_month라면 start_day <= end_day를 항상 만족합니다.
* 각 달의 날짜 수는 1월부터 순서대로 [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] 이며, 윤년은 고려하지 않습니다.

---
##### return 값 설명
시작 날짜와 끝 날짜가 며칠만큼 떨어져 있는지 return 해주세요.

---
##### 예시

| start_month | start_day | end_month | end_day | return |
|-------------|-----------|-----------|---------|--------|
| 1           | 2         | 2         | 2       | 31     |

##### 예시 설명
시작 날짜는 1월 2일이고, 끝 날짜는 2월 2일입니다.

* 1월 2일은 1월 1일로부터 1일만큼 지난 날입니다.
* 2월 2일은 1월 1일로부터 32일만큼 지난 날입니다.
* 32 - 1 = 31입니다.
* 따라서 1월 2일과 2월 2일은 31일만큼 떨어져 있습니다.



#문제4
자연수가 들어있는 리스트가 있습니다. 이 리스트에서 가장 많이 등장하는 숫자의 개수는 가장 적게 등장하는 숫자 개수의 몇 배인지 구하려 합니다. 이를 위해 다음과 같이 간단히 프로그램 구조를 작성했습니다.

~~~
1단계. 리스트에 들어있는 각 자연수의 개수를 셉니다.
2단계. 가장 많이 등장하는 수의 개수를 구합니다.
3단계. 가장 적게 등장하는 수의 개수를 구합니다.
4단계. 가장 많이 등장하는 수가 가장 적게 등장하는 수보다 몇 배 더 많은지 구합니다.
~~~

단, 몇 배 더 많은지 구할 때는 소수 부분은 버리고 정수 부분만 구하면 됩니다.

자연수가 들어있는 리스트 arr가 매개변수로 주어질 때, 가장 많이 등장하는 숫자가 가장 적게 등장하는 숫자보다 몇 배 더 많은지 return 하도록 solution 함수를 작성하려 합니다. 위 구조를 참고하여 코드가 올바르게 동작할 수 있도록 빈칸에 주어진 func_a, func_b, func_c 함수와 매개변수를 알맞게 채워주세요.

---
##### 매개변수 설명
자연수가 들어있는 리스트 arr가 solution 함수의 매개변수로 주어집니다.
* arr의 길이는 3 이상 1,000 이하입니다.
* arr에는 1 이상 1,000이하의 자연수가 들어있습니다.

---
##### return 값 설명
리스트에서 가장 많이 등장하는 숫자가 가장 적게 등장하는 숫자보다 몇 배 이상 많은지 return 해주세요.

* 가장 많이 들어있는 수의 개수와 가장 적게 들어있는 수의 개수가 같은 경우에는 1을 return 합니다.

---
##### 예시

| arr                   | return |
|-----------------------|--------|
| [1,2,3,3,1,3,3,2,3,2] | 2      |

##### 예시 설명
리스트에 1이 2개, 2가 3개, 3이 5개 들어있습니다.

* 가장 적게 들어있는 숫자 : 1 (2개)
* 가장 많이 들어있는 숫자 : 3 (5개)

3이 1보다 2.5배 많이 들어있으며, 소수 부분을 버리고 2를 return 하면 됩니다.


#문제5
주어진 리스트의 순서를 뒤집으려고 합니다.

예를 들어 주어진 리스트가 [1, 4, 2, 3]이면, 순서를 뒤집은 리스트는 [3, 2, 4, 1]입니다.

정수가 들어있는 리스트 arr가 매개변수로 주어졌을 때, arr를 뒤집어서 return 하도록 solution 함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.

---
##### 매개변수 설명
정수가 들어있는 리스트 arr가 solution 함수의 매개변수로 주어집니다.
* arr의 길이는 1 이상 100 이하입니다.
* arr의 원소는 -100 이상 100 이하의 정수입니다.

---
##### return 값 설명
리스트 arr의 순서를 뒤집어서 return 해주세요.

---
##### 예시

| arr          | return       |
|--------------|--------------|
| [1, 4, 2, 3] | [3, 2, 4, 1] |

##### 예시 설명
[1, 4, 2, 3]을 뒤에서부터 읽으면 3, 2, 4, 1입니다. 따라서 [1, 4, 2, 3]의 순서를 뒤집은 결과는 [3, 2, 4, 1]이 됩니다.



#문제6
369 게임은 여러 명이 같이하는 게임입니다. 게임의 규칙은 아래와 같습니다.
* 1부터 시작합니다.
* 한 사람씩 차례대로 숫자를 1씩 더해가며 말합니다.
* 말해야 하는 숫자에 3, 6, 9중 하나라도 포함되어있다면 숫자를 말하는 대신 숫자에 포함된 3, 6, 9의 개수만큼 손뼉을 칩니다.

어떤 수 number가 매개변수로 주어질 때, 1부터 number까지 369게임을 올바르게 진행했을 경우 박수를 총 몇 번 쳤는지를 return 하도록 solution 함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.

---

#####매개변수 설명
number가 solution 함수의 매개변수로 주어집니다.
* number는 10 이상 1,000 이하의 자연수입니다.

---

#####return 값 설명
1부터 number까지 369게임을 올바르게 진행했을 경우 박수를 총 몇 번을 쳤는지 return 해주세요.

---

#####예시

| number | return |
|--------|--------|
| 40     | 22     |

#####예시 설명
3, 6, 9 : 각각 한 번 (+3)
13, 16, 19 : 각각 한 번 (+3)
23, 26, 29 : 각각 한 번 (+3)
30, 31, 32, 33, ..., 38, 39 : 십의 자리 열 번 + 일의 자리 세 번 (+13)
따라서, 3 + 3 + 3 + 13 = 22번의 박수를 칩니다.


#문제7
A 대학에서는 수준별 영어 강의를 제공하고 있습니다. 초급 영어 강의는 토익시험에서 650점 이상 800점 미만의 성적을 취득한 학생만을 수강대상으로 하고 있습니다. 초급 영어 강의에 수강신청한 사람이 10명일 때, 이 중에서 몇명이 수강 대상에 해당하는지 확인하려합니다.

수강신청자들의 토익 성적이 들어있는 리스트 scores가 매개변수로 주어질 때, 수강 대상자들의 인원수를 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정해주세요.

---

#####매개변수 설명
수강신청자들의 토익 성적이 들어있는 리스트 scores가 solution 함수의 매개변수로 주어집니다.
* scores의 원소는 500 이상 990 이하의 정수입니다.
* scores의 길이는 10입니다.

---

#####return 값 설명
수강 대상자들의 인원수를 return 해주세요.

---

#####예시

| scores                                             | return |
|----------------------------------------------------|--------|
| [650, 722, 914, 558, 714, 803, 650, 679, 669, 800] | 6      |

#####예시 설명
|점수| 650 | 722 | 914 | 558 | 714 | 803 | 650 | 679 | 669 | 800 |
|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|-----|
|수강 대상| O   | O   | X   | X   | O   | X   | O   | O   | O   | X   |

650점 이상 800점 미만의 성적을 취득한 학생이 수강대상이므로, 800점을 취득한 학생은 수강대상이 아닙니다.
따라서, 6명이 수강 대상입니다.


#문제8
앞에서부터 읽을 때와 뒤에서부터 읽을 때 똑같은 단어 또는 문장을 팰린드롬(palindrome)이라고 합니다. 예를 들어서 racecar, noon은 팰린드롬 단어입니다. 

소문자 알파벳, 공백(" "), 그리고 마침표(".")로 이루어진 문장이 팰린드롬 문장인지 점검하려 합니다. 문장 내에서 알파벳만 추출하였을 때에 팰린드롬 단어이면 팰린드롬 문장입니다. 예를 들어, "Never odd or even."과 같은 문장은 팰린드롬입니다.

소문자 알파벳, 공백(" "), 그리고 마침표(".")로 이루어진 문장 sentence가 주어질 때 팰린드롬인지 아닌지를 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정해주세요.

---
##### 매개변수 설명
소문자 알파벳, 공백(" "), 그리고 마침표(".")로 이루어진 문장 sentence가 solution 함수의 매개변수로 주어집니다.

* sentence의 길이는 1이상 100이하입니다.
* sentence에는 적어도 하나의 알파벳이 포함되어 있습니다.
* setntence의 각 문자는 소문자 알파벳, 공백(" "), 또는 마침표(".")입니다.

---
##### return 값 설명
주어진 문장이 팰린드롬인지 아닌지를 return 해주세요.

---
##### 예시

| sentence              | return  |
|---------------------- |-------- |
| "never odd or even."  | true    |
| "palindrome"          | false   |


##### 예시 설명
예시 #1
알파벳과 숫자만 추출하여 소문자로 변환해보면 "neveroddoreven"이 되며 이 단어는 팰린드롬입니다.

예시 #2
문장의 맨 앞 문자인 "p"와 맨 뒤 문자인 "e"가 다르므로 팰린드롬이 아닙니다.


#문제9
알파벳 문자열이 주어질 때, 연속하는 중복 문자를 삭제하려고 합니다. 예를 들어, "senteeeencccccceeee"라는 문자열이 주어진다면, "sentence"라는 결과물이 나옵니다.

영어 소문자 알파벳으로 이루어진 임의의 문자열 characters가 매개변수로 주어질 때, 연속하는 중복 문자들을 삭제한 결과를 return 하도록 solution 함수를 작성하였습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 코드가 올바르게 동작하지 않습니다. 주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.

---

#####매개변수 설명
영어 소문자 알파벳으로 이루어진 임의의 문자열 characters가 solution 함수의 매개변수로 주어집니다. 
* characters는 알파벳 소문자로만 이루어져있습니다.
* characters의 길이는 10 이상 100 이하입니다.

---

#####return 값 설명
characters에서 연속하는 중복 문자를 제거한 문자열을 return 해주세요.

---

#####예시

| characters                  | return    |
|-------------------------|-----------|
| "senteeeencccccceeee" | "sentence" |


#문제10
평균은 자료의 합을 자료의 개수로 나눈 값을 의미합니다. 자연수가 들어있는 리스트의 평균을 구하고, 평균 이하인 숫자는 몇 개 있는지 구하려합니다.

예를 들어 주어진 리스트가 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]이라면, 평균은 5.5이므로 리스트에서 평균 이하인 값은 5개입니다.

자연수가 들어있는 리스트 data가 매개변수로 주어질 때, 리스트에 평균 이하인 값은 몇 개인지 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.

---

#####매개변수 설명
자연수가 들어있는 리스트 data가 solution 함수의 매개변수로 주어집니다.
* data의 길이는 10 이상 100 이하 정수입니다.
* data의 원소는 1 이상 1,000 이하의 자연수입니다.

---

#####return 값 설명
평균보다 값이 작은 자연수는 몇개인지 return 해주세요.

---
#####예시

| data                            | return |
|---------------------------------|--------|
| [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] | 5      |
| [1, 1, 1, 1, 1, 1, 1, 1, 1, 10] | 9      |

---
#####예시 설명
예시 #1
자료의 합은 55이며, 자료의 개수는 10개입니다. 따라서 평균은 55 / 10 = 5.5입니다.
주어진 리스트에서 5.5보다 작은 숫자는 총 5개입니다.

예시 #2
자료의 합은 19이며, 자료의 개수는 10개입니다. 따라서 평균은 19 / 10 = 1.9입니다.
주어진 리스트에서 1.9보다 작은 숫자는 총 9개입니다.


 

#문제1
왼손 장갑의 제품 번호가 들어있는 리스트와 오른손 장갑의 제품 번호가 들어있는 리스트가 있습니다. 제품 번호는 1부터 10 사이의 자연수입니다. 제품 번호가 같은 왼손장갑과 오른손 장갑을 합쳐 장갑 한 쌍을 만들 수 있습니다. 이때, 최대한 많은 쌍의 장갑을 만들면 최대 몇 쌍을 만들 수 있는지 구하려 합니다. 이를 위해 다음과 같이 프로그램 구조를 작성했습니다. 

~~~
1. 왼손 장갑이 제품 번호별로 몇 개씩 있는지 개수를 셉니다.
2. 오른손 장갑이 제품 번호별로 몇 개씩 있는지 개수를 셉니다.
3. 각 제품 번호별로 최대한 많은 장갑 쌍을 만들면서 개수를 셉니다.
~~~

왼손 장갑의 제품 번호가 들어있는 리스트 left_gloves와 오른손 장갑의 제품 번호가 들어있는 리스트 right_gloves가 매개변수로 주어질 때, 최대 몇 개의 장갑 쌍을 만들 수 있는지 return 하도록 solution 함수를 작성하려 합니다. 이때, 위 구조를 참고하여 중복되는 부분은 func_a라는 함수로 작성했습니다. 코드가 올바르게 동작할 수 있도록 빈칸을 알맞게 채워주세요.

---
##### 매개변수 설명
왼손 장갑의 제품 번호가 들어있는 리스트 left_gloves와 오른손 장갑의 제품 번호가 들어있는 리스트 right_gloves가 solution 함수의 매개변수로 주어집니다.

* left_gloves의 길이는 1 이상 100 이하입니다.
* left_gloves의 원소는 1 이상 10 이하의 자연수입니다.
* right_gloves의 길이는 1 이상 100 이하입니다.
* right_gloves의 원소는 1 이상 10 이하의 자연수입니다.

---
##### return 값 설명 
왼손과 오른손의 제품 번호가 같은 장갑 끼리 한 쌍을 만들 때, 최대 몇 개의 쌍을 만들 수 있는지 개수를 return 해주세요.

---
##### 예시

| left_gloves              | right_gloves                  | return |
|---------------------------|--------------------------------|--------|
| [2, 1, 2, 2, 4] | [1, 2, 2, 4, 4, 7] | 4      |

---
##### 예시 설명
예시 #1
왼손 장갑 : 1번 장갑 1개, 2번 장갑 3개, 4번 장갑 1개가 있습니다.
오른손 장갑 : 1번 장갑 1개, 2번 장갑 2개, 4번 장갑 2개, 7번 장갑 1개가 있습니다.

따라서 1번 장갑 한 쌍, 2번 장갑 두 쌍, 4번 장갑 한 쌍을 만들면 최대 4개의 장갑 쌍을 만들 수 있습니다.


#문제2
자연수가 들어있는 리스트에 3의 배수와 5의 배수 중 어떤 수가 더 많은지 알아보려 합니다. 이를 위해 다음과 같이 프로그램 구조를 작성했습니다.

~~~
1. 3의 배수의 개수를 셉니다.
2. 5의 배수의 개수를 셉니다.
3. 3의 배수와 5의 배수의 개수를 비교 후 다음을 수행합니다.
  3-1. 만약 3의 배수가 더 많다면 "three"를 return 합니다.
  3-2. 만약 5의 배수가 더 많다면 "five"를 return 합니다.
  3-3. 만약 3의 배수와 5의 배수의 개수가 같다면 "same"을 return 합니다.
~~~

자연수가 들어있는 리스트 arr가 매개변수로 주어질 때, 리스트에 3의 배수의 개수가 더 많다면 "three"를, 5의 배수의 개수가 더 많다면 "five"를, 3의 배수와 5의 배수의 개수가 같다면 "same"을 return 하도록 solution 함수를 작성하려 합니다. 위 구조를 참고하여 코드가 올바르게 동작할 수 있도록 빈칸에 주어진 func_a, func_b, func_c 함수와 매개변수를 알맞게 채워주세요.

---
#####매개변수 설명
자연수가 들어있는 리스트 arr가 solution 함수의 매개변수로 주어집니다.
* arr의 길이는 1 이상 100 이하입니다.
* arr에 들어있는 숫자는 1 이상 1,000 이하의 자연수입니다.

---
#####return 값 설명
리스트에 3의 배수의 개수가 더 많다면 "three"를, 5의 배수의 개수가 더 많다면 "five"를, 3의 배수와 5의 배수의 개수가 같다면 "same"을 return 해주세요.

---
#####예시

| arr                    | return |
|------------------------|--------|
| [2, 3, 6, 9, 12, 15, 10, 20, 22, 25] | "three" |

#####예시 설명

* 3의 배수 : 3, 6, 9, 12, 15
* 5의 배수 : 10, 15, 20, 25

3의 배수는 5개, 5의 배수는 4개이므로 3의 배수가 더 많습니다. 따라서 "three"를 return 합니다.


#문제3
서로 다른 두 자연수 N과 M이 매개변수로 주어질 때, N부터 M까지의 자연수 중에서 짝수들의 제곱의 합을 return 하도록 solution 함수를 완성해주세요.

---
#####매개변수 설명
두 자연수 N과 M이 solution 함수의 매개변수로 주어집니다.
* N과 M은 1 이상 1,000 이하의 자연수이며, N < M을 항상 만족합니다.

---
#####return 값 설명
N부터 M까지의 수 중에서 짝수인 수의 제곱의 합을 return 해주세요.

---
#####예시

| N | M | return |
|---|---|--------|
| 4 | 7 | 52     |

#####예시 설명
4부터 7까지의 자연수 중에서 짝수는 4와 6입니다.

* 4^2 + 6^2 = 16 + 36 = 52

따라서 52를 return 하면 됩니다.


#문제4
단어들이 들어있는 리스트에서 길이가 5 이상인 단어를 리스트에 들어있는 순서대로 이어 붙이려 합니다.

예를 들어 리스트가 다음과 같은 경우

["my", "favorite", "color", "is", "violet"]

"favoritecolorviolet"을 만들면 됩니다.

단어들이 들어있는 리스트 words가 solution 함수의 매개변수로 주어질 때, 길이가 5 이상인 단어를 순서대로 이어 붙인 문자열을 return 하도록 solution 함수를 완성해주세요.

---
#####매개변수 설명
단어들이 들어있는 리스트 words가 solution 함수의 매개변수로 주어집니다.

* words의 길이는 1 이상 100 이하입니다.
* words에 들어있는 각 단어의 길이는 1 이상 10 이하이며, 알파벳 소문자로만 이루어져 있습니다.

---
#####return 값 설명
길이가 5 이상인 단어를 순서대로 이어 붙여 return 해주세요.
* 만약 return 할 문자열이 빈 문자열이면 "empty"를 return 해주세요.

---
#####예시

| words                                       | return                |
|---------------------------------------------|-----------------------|
| ["my", "favorite", "color", "is", "violet"] | "favoritecolorviolet" |
| ["yes", "i", "am"]                          | "empty"               |

#####예시 설명
예시 #1
길이가 5 이상인 단어는 "favorite", "color", "violet" 입니다. 이를 리스트에 들어있는 순서대로 이어 붙이면 "favoritecolorviolet"이 됩니다.

예시 #2
길이가 5 이상인 단어가 없으므로 "empty"를 return 하면 됩니다.


#문제5
게임 캐릭터가 몬스터와 1:1 전투를 하려 합니다. 몬스터는 처음에 일정 수치의 체력(HP)을 가지고 있습니다. 캐릭터가 전투에서 이기려면 몬스터를 공격해 몬스터의 체력을 0이하로 만들어야합니다. 캐릭터는 공격 마법만 사용하며, 공격 마법은 항상 같은 데미지를 입힙니다. 몬스터는 힐링 마법만을 사용하며, 힐링 마법은 항상 같은 수치로 체력을 회복합니다. 둘은 항상 번갈아 가며 마법을 사용하고, 처음에는 항상 캐릭터가 먼저 공격을 시작합니다.

캐릭터의 공격력 attack과 몬스터가 자신의 차례에 회복하는 체력 recovery, 몬스터의 초기 체력 hp가 매개변수로 주어질 때, 몬스터를 잡기 위해서 최소 몇 번 공격해야 하는지 return 하도록 solution 함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.

---
#####매개변수 설명
캐릭터의 공격력 attack과 몬스터가 자신의 차례에 회복하는 체력 recovery, 몬스터의 초기 체력 hp가 solution 함수의 매개변수로 주어집니다.

* attack은 1 이상 100 이하의 자연수입니다.
* recovery는 1 이상 100 이하의 자연수입니다.
* 캐릭터의 공격력은 항상 몬스터의 회복력보다 큽니다(recovery < attack).
* hp는 200 이상 1,000 이하의 자연수입니다.

---
#####return 값 설명
몬스터를 잡기 위해서 최소 몇 번 공격해야 하는지 return 해주세요.

---
#####예시

| attack | recovery | hp  | return |
|--------|----------|-----|--------|
| 30     | 10       | 60 | 3      |

#####예시 설명

몬스터의 체력 변화는 아래와 같습니다.

| 차례 | hp 변화  | 남은 hp |
|-------|----------|---------|
| 캐릭터     | 없음        | 60      |
| 몬스터     | 공격 -30 | 30      |
| 캐릭터     | 회복 +10 | 40      |
| 몬스터     | 공격 -30 | 10      |
| 캐릭터     | 회복 +10 | 20      |
| 몬스터     | 공격 -30 | -10       |

따라서 최소 3번 공격해야 몬스터를 잡을 수 있습니다.



#문제6
하루 동안 엘리베이터가 멈춘 층이 순서대로 들어있는 리스트가 있습니다. 이때, 엘리베이터의 총 이동거리를 구하려 합니다. 단, 층과 층 사이의 거리는 1입니다. 

예를 들어 리스트에 [1, 2, 5, 4, 2]가 들어있다면, 엘리베이터가 이동한 거리는 7입니다.
 
하루 동안 엘리베이터가 멈춰 선 층이 순서대로 들어있는 리스트 floors가 매개변수로 주어질 때, 엘리베이터의 총 이동 거리를 return 하도록 solution 함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.

---
#####매개변수 설명
하루 동안 엘리베이터가 멈춘 층이 순서대로 들어있는 리스트 floors가 solution 함수의 매개변수로 주어집니다.
* floors의 길이는 2 이상 100 이하입니다.
* floors의 원소는 1 이상 100 이하의 자연수이며, 인접한 두 원소의 값이 같은 경우는 주어지지 않습니다.
* floors의 첫 번째 원소는 엘리베이터의 처음 위치를 나타냅니다.

---
#####return 값 설명
엘리베이터의 총 이동 거리를 return 해주세요.

---
#####예시
| floors          | return |
|-----------------|--------|
| [1, 2, 5, 4, 2] | 7      |

#####예시 설명
엘리베이터는 처음에 1층에 있으며, 다음 순서대로 움직였습니다.

* 1층 - 2층 - 5층 - 4층 - 2층

층과 층사이의 거리는 1이므로, 엘리베이터가 이동한 거리는 다음과 같습니다.

* 1층 - 2층 (이동 거리 : 1)
* 2층 - 5층 (이동 거리 : 3)
* 5층 - 4층 (이동 거리 : 1)
* 4층 - 2층 (이동 거리 : 2)

따라서 총 이동 거리는 7입니다.


#문제7
화씨온도(℉)를 섭씨온도(℃)로, 섭씨온도(℃)를 화씨온도(℉)로 바꾸려고 합니다. 두 온도 사이의 환산 공식은 다음과 같습니다.

~~~
환산공식
* 화씨온도(℉)에서 섭씨온도(℃)로 환산 : (화씨온도 - 32) ÷ 1.8 = 섭씨온도
* 섭씨온도(℃)에서 화씨온도(℉)로 환산 : (섭씨온도 x 1.8) + 32 = 화씨온도
~~~

현재 온도 value와 현재 단위 unit이 매개변수로 주어질 때, 환산한 온도의 정수 부분을 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.

---

#####매개변수 설명
현재 온도 value와 현재 단위 unit이 solution 함수의 매개변수로 주어집니다.
* unit은 화씨온도 "F"와 섭씨온도 "C" 둘 중 하나로 주어집니다.
  * unit이 "F"인 경우 value는 화씨온도(℉)를 나타냅니다.
  * unit이 "C"인 경우 value는 섭씨온도(℃)를 나타냅니다.
* value는 -460 이상 1,000 이하의 정수입니다.

---

##### return 값 설명
환산한 온도의 정수 부분을 return 해주세요.
* unit이 "F"인 경우에는 화씨온도(℉)에서 섭씨온도(℃)로 환산해주세요.
* unit이 "C"인 경우에는 섭씨온도(℃)에서 화씨온도(℉)로 환산해주세요.

---

#####예시 

| value | unit | return |
|-------|------|--------|
| 527   | "C"  | 980    |

#####예시 설명
unit이 "C" 이므로 주어진 value는 527℃를 나타냅니다. 이를 화씨온도(℉)로 환산하면 다음과 같습니다.
(섭씨온도 x 1.8) + 32 = (527 x 1.8) + 32 = 980.6

따라서 환산 결과는 980.6℉이며, 정수 부분만 return 하면 되므로 980을 return 하면 됩니다.



#문제8
자연수의 각 자릿수 중에서 소수는 몇 개인지 구하려 합니다. 즉, 자연수를 각 자릿수별로 나누었을 때, 2, 3, 5, 7이 몇 개 있는지 구하려 합니다.

예를 들어, 자연수가 29022531일 때, 각 자릿수 중 소수의 위치는 다음과 같습니다.

* `2`90`2``2``5``3`1

따라서 소수의 개수는 총 5개입니다.

자연수 number가 매개변수로 주어질 때, number의 각 자릿수 중 소수는 몇 개인지 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.

---
#####매개변수 설명
자연수 number가 solution 함수의 매개변수로 주어집니다.
* number는 1 이상 1,000,000,000 이하의 자연수입니다.

---
#####return 값 설명
number의 각 자릿수 중 소수는 몇 개인지 return 해주세요.

---
#####예시

| number   | return |
|----------|--------|
| 29022531 | 5      |


#문제9
N명의 후보에 대해 투표한 결과가 들어있는 리스트가 있습니다. 예를 들어 5명의 후보에 대해 투표를 진행한 결과가 [2, 5, 3, 4, 1, 5, 1, 5, 5, 3]이라면 순서대로 [2번, 5번, 3번, 4번, 1번, 5번, 1번, 5번, 5번, 3번] 후보에 투표했음을 나타냅니다. 이때, 정확히 K 표를 받은 후보는 총 몇 명인지 구하려 합니다. 

예를 들어 K = 2일 때, 위 투표 결과에서 정확히 2표를 받은 후보는 1번, 3번 후보로, 총 2명입니다. 

투표 결과가 들어있는 리스트 votes, 후보의 수 N, 표의 개수 K가 매개변수로 주어질 때, K 표를 받은 후보는 몇 명인지 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다. 주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.

---
#####매개변수 설명
투표 결과가 들어있는 리스트 votes, 후보의 수 N, 표의 개수 K가 solution 함수의 매개변수로 주어집니다.
* votes의 길이는 10 이상, 100 이하입니다.
* votes의 원소는 1 이상, 전체 후보의 수 N 이하의 자연수입니다.
* N은 3 이상 10 이하의 자연수입니다.
* K는 0 이상 100 이하의 정수입니다.

---
#####return 값 설명
K 표를 받은 후보는 몇 명인지 return 해주세요.

---
#####예시
| votes                          | N | K | return |
|--------------------------------|---|---|--------|
| [2, 5, 3, 4, 1, 5, 1, 5, 5, 3] | 5 | 2 | 2      |

#####예시 설명
각 후보가 받은 표는 다음과 같습니다.

* 1번 후보 : 2표
* 2번 후보 : 1표
* 3번 후보 : 2표
* 4번 후보 : 1표
* 5번 후보 : 4표

따라서 2표를 받은 후보는 1번, 3번 후보로 총 2명입니다.


#문제10
A 백화점에서는 고객의 구매금액에 따라 다음과 같이 상품권을 지급합니다.

| 구매 금액         | 상품권       |
|-------------------|--------------|
| 100만 원 이상 구매 | 5만 원 상품권 |
| 60만 원 이상 구매  | 3만 원 상품권 |
| 40만 원 이상 구매  | 2만 원 상품권 |
| 20만 원 이상 구매  | 1만 원 상품권 |

이때, 상품권은 지급 가능한 가장 큰 금액으로 한 장만 지급합니다. 예를 들어 고객이 65만 원을 구매했다면, 3만 원 상품권 한 장만 지급합니다.

고객들의 구매 금액이 들어있는 리스트 purchase가 주어질 때, 고객들에게 지급해야 하는 상품권 총액을 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에, 코드가 올바르게 동작하지 않습니다. 주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정해주세요.

---
#####매개변수 설명
고객들의 구매 금액이 들어있는 리스트 purchase가 solution 함수의 매개변수로 주어집니다.
* purchase의 길이는 1 이상 100 이하입니다.
* purchase의 원소는 10 이상 1,500,000 이하의 자연수이며, 10원 단위로 주어집니다.

---
#####return 값 설명
고객들에게 지급해야 하는 상품권 총액을 return 해주세요.

---
#####예시

| purchase                                  | return |
|-------------------------------------------|--------|
| [150000, 210000, 399990, 990000, 1000000] | 100000 |

#####예시 설명

* 210,000원, 399,990원을 구매한 고객에게 1만 원 상품권을 지급해야 합니다.
* 990,000원을 구매한 고객에게 3만 원 상품권을 지급해야 합니다.
* 1,000,000원을 구매한 고객에게 5만 원 상품권을 지급해야 합니다.

따라서 지급해야 하는 상품권은 1만 원 상품권 2장, 3만 원 상품권 1장, 5만 원 상품권 1장으로, 총액은 10만 원 입니다.


 

'{BE} Python 3.1x' 카테고리의 다른 글

xlsx control. python 1 : swift 0  (0) 2020.09.12
Swift VS Python 으로 카테고리 변경  (0) 2020.09.02
텍스트를 이미지로 그려서 붙이기  (0) 2020.07.01
plist 읽기  (0) 2020.07.01
nodepointer  (1) 2020.07.01

+ Recent posts