2회차 :COS Pro문제(제한시간: 50분)
문제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만 원 입니다.
3회차 : COS Pro연습
문제1
학생들의 시험 점수가 주어졌을 때, n번 학생이 몇 등인지 구하려 합니다.
학번은 0번부터 시작하며, 시험 점수는 학번순으로 주어집니다.
예를 들어 학생 네 명의 시험 점수가 다음과 같은 경우 3번 학생은 3등을 했습니다.
이를 위해 다음과 같이 프로그램 구조를 작성했습니다.
1. n번 학생의 점수를 변수에 저장합니다.
2. 점수를 내림차순으로 정렬합니다.
3. 리스트의 첫 번째 원소부터 마지막 원소까지 순회하며 n번 학생의 점수를 찾습니다.
3-1. 1번 단계에서 저장해둔 점수와 같은 점수를 찾으면 등수를 return 합니다.
학생들의 시험 점수가 번호순으로 들은 리스트 scores와 학번 n이 solution 함수의 매개변수로 주어질 때,
n번 학생의 등수를 return 하도록 solution 함수를 작성하려 합니다.
위 구조를 참고하여 코드가 올바르게 동작하도록 빈칸에 주어진 func_a, func_b, func_c 함수와 매개변수를 알맞게 채워주세요.
매개변수 설명
학생들의 시험 점수가 번호순으로 들은 리스트 scores와 학번 n이 solution 함수의 매개변수로 주어집니다.
* scores의 길이는 1 이상 100 이하입니다.
* 점수는 0점 이상 100점 이하이며 동점자는 없습니다.
* n은 0 이상 (scores의 길이 - 1) 이하의 정수입니다.
return 값 설명
n번 학생의 등수를 return 해주세요.
예시
| scores | n | result |
|------------------|---|--------|
| [20, 60, 98, 59] | 3 | 3 |
예시 설명
* 3번 학생의 점수는 59점입니다.
* 점수를 내림차순으로 정렬하면 [98, 60, 59, 20]입니다.
* 정렬된 점수에서 59는 3번째에 있습니다.
따라서 3번 학생은 3등입니다.
문제2
모 학교에서는 학기가 끝날 때마다 장학금을 줍니다(
나도 받고 싶다 장학금).
이때 장학생이 몇 명인지 구하려고 합니다. 장학금을 주는 조건은 다음과 같습니다.
1. 이번 학기 성적이 80점 이상(100점 만점)이면서 석차가 상위 10% 이내인 학생
2. 이번 학기 성적이 80점 이상이면서 1등인 학생
3. 직전 학기 대비 성적이 가장 많이 오른 학생(여러 명인 경우 해당 학생 전부)
단, 동점인 학생들은 등수가 같으며, 중복 수혜는 불가합니다.
장학생이 몇 명인지 구하기 위해 다음과 같이 프로그램 구조를 작성했습니다.
1. 이번 학기 성적을 기준으로 학생별 석차를 구합니다.
2. 각 학생의 (이번 학기 성적 - 직전 학기 성적) 중 최댓값을 구합니다.
3. 아래 조건을 만족하는 학생을 발견하면, 장학생 수를 1 증가시킵니다.
3-1. 이번 학기 성적이 80점 이상이고, 석차가 상위 10% 이내인 경우
3-2. 또는 이번 학기 성적이 80점 이상이고, 석차가 1등인 경우
3-3. 또는 (이번 학기 성적 - 직전 학기 성적)이 2단계에서 구한 값과 같고, 그 값이 양수인 경우
4. 장학생 수를 return 합니다.
학생들의 이번 학기 성적을 담고 있는 리스트 current_grade, 직전 학기 성적을 담고 있는 리스트 last_grade가 매개변수로 주어질 때,
장학생 수를 return 하도록 solution 함수를 작성하려 합니다.
위 구조를 참고하여 코드가 올바르게 동작할 수 있도록 빈칸에 주어진
func_a, func_b, func_c 함수와 매개변수를 알맞게 채워주세요.
매개변수 설명
학생들의 이번 학기 성적, 지난 학기 성적이 들어있는 리스트 current_grade, last_grade가 solution 함수의 매개변수로 주어집니다.
* current_grade의 길이와 last_grade의 길이는 같으며, 길이는 1 이상 200 이하입니다.
* current_grade와 last_grade의 원소는 0 이상 100 이하인 정수입니다.
return 값 설명
장학생 수를 return 해주세요.
예시
| current_grade | last_grade | return |
|------------|------------|--------|
| [70, 100, 70, 80, 50, 95] | [35, 65, 80, 50, 20, 60] | 3 |
예시 설명
학생 수가 10명보다 적으므로, 1등이 장학금을 받습니다.
직전 학기 대비 성적이 가장 많이 오른 학생은 다음과 같이 3명입니다.
* 35 → 70점
* 65 → 100점
* 60 → 95점
이때, 두 번째 학생은 이번 학기 1등 장학금을 이미 받아 중복 수혜가 불가하고,
나머지 두 학생은 장학금을 받을 수 있습니다. 따라서 장학금을 받는 학생은 총 3명입니다.
문제3
체조선수는 여러 심사위원의 점수 중 가장 높은 점수 하나와 가장 낮은 점수 하나를 제외하고
나머지 점수들의 평균을 계산하여 최종점수를 받습니다. _단, 이때 소수점 이하의 수는 버립니다.
예를 들어, A 선수가 10명의 심사위원에게 [35, 28, 98, 34, 20, 50, 85, 74, 71, 7]의 점수를 받았습니다.
가장 높은 점수인 98점과 가장 낮은 점수인 7점을 제외하고 나머지 8명의 심사위원 점수 평균을 구하면 49.625점입니다.
여기서 소수점 이하의 수를 버리면 49점입니다.
각 심사위원이 매긴 점수가 담긴 리스트 scores가 매개 변수로 주어질 때, 이 선수가 받은 점수를 return 하도록 solution 함수를 작성해주세요.
매개변수 설명
심사위원이 준 점수가 들어있는 리스트 scores가 solution 함수의 매개변수로 주어집니다.
* scores의 길이는 3 이상 100 이하입니다.
* 심사위원이 부여하는 점수의 범위는 0 이상 100 이하의 정수입니다.
return 값 설명
심사위원이 준 점수 중 가장 높은 점수와 가장 낮은 점수를 제외한 점수의 평균에서 소수점을 버린 값을 return 합니다.
예시
| scores | return |
|-----------------------------------------|--------|
| [35, 28, 98, 34, 20, 50, 85, 74, 71, 7] | 49 |
| [1, 1, 1, 1, 1] | 1 |
예시 설명
예시 #1
문제에 나온 예와 같습니다.
예시 #2
가장 높은 점수는 1점이며, 가장 낮은 점수도 1점입니다. 1점을 두 개 제외한 나머지 점수의 합은 3점이며, 평균은 1점이 됩니다.
문제4(난이도 상)
영어 단어를 외우기 위해 단어를 반복하여 타이핑합니다. 그런데, 타이핑하고 보니 오타가 많습니다.
오타를 수정하려면 문자를 몇 개 바꿔야 하는지 구하려 합니다.
예를 들어, "CODE"라는 단어를 3번 타이핑했더니 ["CODE", "COED", "CDEO"] 가 적혀있었습니다.
1. "CODE"는 바르게 적혔습니다.
2. "COED"는 E와 D를 각각 D와 E로 바꾸면 됩니다.
3. "CDEO"는 D, E, O를 각각 O, D, E로 바꾸면 됩니다.
따라서 바꿔야 하는 문자는 총 5개입니다.
타이핑한 단어를 담은 리스트 words와 원래 치려 한 단어인 word가 주어질 때 바꿔야 하는 문자 개수를 return 하도록 solution 함수를 완성해주세요.
매개변수 설명
타이핑한 단어를 담은 리스트 words와 원래 치려 한 단어인 word가 solution 함수의 매개변수로 주어집니다.
* word는 10개 이하의 알파벳 대문자로만 이루어진 단어입니다.
* words에 담긴 문자열의 길이는 word의 길이와 같으며 모든 문자열은 알파벳 대문자로만 이루어져 있습니다.
* words에 담긴 문자열의 개수는 15 이하 자연수입니다.
return 값 설명
바꾸어야 하는 문자 수를 return 해주세요.
예시
| words | word | return |
|--------------------------|--------|--------|
| ["CODE", "COED", "CDEO"] | "CODE" | 5 |
예시 설명
문제에 나온 예와 같습니다.
Hint> zip함수 이용
문제5
여행객들의 총 교통비를 계산하려고 합니다.
교통편은 "Bus", "Ship", "Airplane" 총 3가지입니다.
나이가 20살 이상이면 어른 요금을, 그렇지 않으면 어린이 요금을 받습니다.
각 교통편별 가격은 다음과 같습니다.
| | 어른 | 어린이 |
|---|---|---|
| Bus | 40,000원 | 15,000원 |
| Ship | 30,000원 | 13,000원 |
| Airplane | 70,000원 | 45,000원 |
여행객들이 10명 이상인 경우 연령에 따라 할인을 받습니다.
| 어른 | 어린이 |
|---|---|
| 10% | 20% |
여행객들의 나이를 담고 있는 리스트 member_age와 교통편인 transportation이 매개변수로 주어질 때,
총 교통비를 return 하도록 solution 함수를 작성하려 합니다.
빈칸을 채워 전체 코드를 완성해주세요.
매개변수 설명
여행객들의 나이를 담고 있는 리스트 member_age와 교통편인 transportation이 solution 함수의 매개변수로 주어집니다.
* member_age의 길이는 1 이상 1,000 이하입니다.
* member_age의 원소는 1 이상 100 이하입니다.
* transportation은 "Bus" 또는 "Ship" 또는 "Airplane" 입니다.
return값 설명
교통비 총액을 return 해주세요.
예시
| member_age | transportation | return |
|---|---|---|
| [13, 33, 45, 11, 20] | "Bus" | 150000 |
| [25, 11, 27, 56, 7, 19, 52, 31, 77, 8] | "Ship" | 203600 |
예시 설명
예시 #1
여행객들의 나이는 [13, 33, 45, 11, 20]이고 교통수단으로는 "Bus"를 이용하려합니다.
나이가 20살 미만인 인원은 2명으로 어린이 요금은 30,000원이고
나이가 20살 이상인 인원은 3명으로 어른 요금은 120,000원입니다.
따라서 교통비 총액은 150,000원입니다.
예시 #2
여행객들의 나이는 [25, 11, 27, 56, 7, 19, 52, 31, 77, 8]이고 교통수단으로는 "Ship"을 이용하려합니다.
여행객들이 10명 이상이므로 교통비가 할인됩니다.
나이가 20살 미만인 인원은 4명으로 어린이 요금은 41,600원이고 나이가 20살 이상인 인원은 6명으로 어른 요금은 162,000원입니다.
따라서 교통비 총액은 203,600원입니다.
문제6
타일을 'R', 'G', 'B' 색으로 칠하려 합니다. R 색으로는 3칸을 한 번에, G 색으로는 2칸을 한 번에 칠할 수 있으며, B 색으로는 1칸을 칠할 수 있습니다.
색은 R, G, B 순서로 한 번씩 번갈아 가면서 사용해야 하며, 타일의 길이를 넘겨서 칠할 수는 없습니다.
예를 들어, 타일 길이가 11이면 "RRRGGBRRRGG"의 색으로 칠할 수 있습니다.
타일 길이가 매개변수 tile_length로 주어질 때, 타일을 색칠한 순서를 문자열로 return하는 solution 함수를 작성하려 합니다.
빈칸을 채워 전체 코드를 완성해주세요.
순서에 맞게 타일을 칠할 수 없다면 -1을 return 해주세요.
매개변수 설명
타일 길이 tile_length가 solution 함수의 매개변수로 주어집니다.
* tile_length는 1,000 이하의 자연수입니다.
return 값 설명
타일을 색칠한 순서를 문자열로 return 해주세요.
* 순서에 맞게 타일을 칠할 수 없다면 -1을 return 해주세요.
예시
| tile_length |answer |
|:---|:---:|------|:--------:|--------:|
|11| "RRRGGBRRRGG"|
|16| "-1"|
예시 설명
예시 #1
다음과 같은 순서로 타일을 칠하면 됩니다.
* 'R' - 3장
* 'G' - 2장
* 'B' - 1장
* 'R' - 3장
* 'G' - 2장
따라서 "RRRGGBRRRGG"를 return 하면 됩니다.
예시 #2
타일 길이는 16입니다.
'R', 'G', 'B' 순서대로 타일을 색칠하면 다음과 같습니다.
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
|---|---|---|---|---|---|---|---|---|----|----|----|----|----|----|----|
| R | R | R | G | G | B | R | R | R | G | G | B | R | R | R | - |
15번째 타일까지 칠하니 타일이 한 칸 남았습니다. G 색으로는 두 칸을 칠해야 하므로 타일을 더 칠할 수 없습니다.
따라서 "-1"을 return 합니다.
문제7
주스 1잔을 만들려면 사과 3개와 당근 1개가 필요합니다.
그런데 키우는 토끼에게 먹이를 주기 위해 사과와 당근 종류에 상관없이 k개를 빼놓으려고 합니다.
주스는 최대한 많이 만들수록 좋습니다.
사과 개수 num_apple과 당근 개수 num_carrot, 토끼에게 줄 먹이 개수 k가 주어질 때 주스를 최대 몇 잔 만들 수 있는지 return 하도록 solution 함수를 작성했습니다.
그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다.
주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.
매개변수 설명
사과 개수 num_apple과 당근 개수 num_carrot, 토끼에게 줄 먹이 개수 k가 solution 함수의 매개변수로 주어집니다.
* 사과 개수 num_apple과 당근 개수 num_carrot는 0 이상 200 이하인 정수입니다.
* 토끼에게 줄 먹이 개수 k는 0 이상 `num_apple+num_carrot` 이하인 정수입니다.
return 값 설명
주스를 최대 몇 잔 만들 수 있는지 return 해주세요.
예시
| num_apple | num_carrot | k | return |
|----|---|---|--------|
| 5 | 1 | 2 | 1 |
| 10 | 5 | 4 | 2 |
예시 설명
예시 #1
사과 2개를 먹이로 주면 사과 3개, 당근 1개가 남습니다.
남은 재료로 주스를 1잔 만들 수 있습니다.
예시 #2
사과 2개와 당근 2개를 먹이로 주면 사과 8개, 당근 3개가 남습니다.
남은 재료로 주스를 2잔 만들 수 있습니다.
문제8
A씨가 하루에 TV를 두 대 이상 트는 시간을 알아내려합니다.
A씨는 매일 세 프로그램을 시청합니다.
프로그램 방송 시간이 겹칠 때는 TV를 여러 대 켜서 모든 프로그램을 봅니다.
예를 들어 두 프로그램 방송 시간대가 겹치면 TV를 두 대 켜고, 세 프로그램 방송 시간이 겹치면 TV를 세 대 켭니다.
세 프로그램 방영 시작 시각과 끝 시각이 담긴 2차원 리스트 programs가 매개변수로 주어질 때, 하루에 TV를 2대 이상 트는 총 시간을 return 하도록 solution 함수를 작성했습니다.
그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다.
주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.
매개변수 설명
3개의 프로그램이 시작되는 시각과 끝나는 시각이 담긴 2차원 리스트 programs가 solution 함수의 매개변수로 주어집니다.
* programs의 행 길이는 항상 3입니다.
* programs 리스트의 각 원소는 각 프로그램의 방송 시간이 [시작 시각, 끝 시각] 형태로 들어있습니다.
* 프로그램의 시작 시각과 끝 시각은 0 이상 24 이하의 정수입니다.
* 프로그램의 시작 시각은 끝 시각보다 항상 빠릅니다.
return 값 설명
A 씨가 TV를 2대 이상 트는 총 시간을 return 해주세요.
예시
| programs | return |
|--------------------------|--------|
| [[1, 6], [3, 5], [2, 8]] | 4 |
예시 설명
2대의 TV를 트는 시간이 2시부터 3시까지, 5시부터 6시까지 총 2시간이고
3대의 TV를 트는 시간이 3시부터 5시까지 총 2시간입니다.
따라서 TV를 2대 이상 트는 시간은 총 4시간입니다.
문제9
관공서 주차장에서는 차량 2부제를 실시합니다.
차량 2부제는 차량 번호 끝자리가 홀수인 차량은 홀수 일에만, 짝수인 차량은 짝수 일에만 주차장에 들어올 수 있도록 하는 제도입니다.
며칠인지를 나타내는 day와 그날 주차장에 들어오려고 하는 차들의 번호를 담고 있는 리스트 numbers가 매개변수로 주어질 때, 주차장에 들어올 수 있는 차량의 수를 return 하도록 solution 함수를 작성했습니다.
그러나, 코드 일부분이 잘못되어있기 때문에, 코드가 올바르게 동작하지 않습니다.
주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정해주세요.
단, 중복되는 번호판 번호는 주어지지 않습니다.
매개변수 설명
며칠인지를 나타내는 day와 그날 주차장에 들어오려고 하는 차들의 번호를 담고 있는 리스트 numbers가 solution 함수의 매개변수로 주어집니다.
* day는 1 이상 31이하의 자연수입니다.
* numbers의 길이는 1 이상 9,000 이하입니다.
* numbers의 원소는 1,000 이상 9,999 이하의 자연수입니다.
* numbers에는 차량 번호가 중복되어 들어있지 않습니다.
return값 설명
주차장에 들어올 수 있는 차량의 수를 return 해주세요.
예시
| day | numbers | return |
|---|---|---|
| 17 | [3285, 1724, 4438, 2988, 3131, 2998] | 2 |
예시 설명
17일은 홀수 일이므로 홀수 번호 차량인 1724, 3131 총 2대의 차량만 주차장에 들어올 수 있습니다.
문제10
리스트 원소인 자신을 2로 나눈 값이 리스트에 있는 수의 개수를 구하려고 합니다.
예를 들어, 리스트가 [4, 8, 3, 6, 7]인 경우, 6/2 = 3, 8/2 =4이므로 자신을 2로 나눈 값이 리스트에 들어있는 수의 개수는 총 2개입니다.
숫자가 담긴 리스트 arr가 주어졌을 때, 자신을 2로 나눈 값이 리스트에 들어있는 수가 몇 개인지 return 하는 solution 함수를 작성했습니다.
그러나, 코드 일부분이 잘못되어있기 때문에, 코드가 올바르게 동작하지 않습니다.
주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정해주세요.
매개변수 설명
숫자가 담긴 리스트 arr가 solution 함수의 매개변수로 주어집니다.
* arr의 크기는 1 이상 1,000 이하입니다.
* arr의 원소는 1,000 이하의 자연수입니다.
return 값 설명
자신을 2로 나눈 값이 리스트에 들어있는 수가 몇 개인지 return 해주세요.
예시
| arr |return |
|:---|:---:|---|:---:|---|:---:|--|:--------:|--------:|
| [4, 8, 3, 6, 7] |2|
예시 설명
4/2=2이고, 2는 리스트에 없습니다.
8/2=4이고 4는 4 이고 4는 리스트에 존재합니다.
3/2=1.5이고 1.5는 리스트에 없습니다.
6/2=3이고 3은 리스트에 존재합니다.
7/2=3.5이고 3.5는 리스트에 없습니다.
따라서 자신을 2로 나눈 값이 리스트에 들어있는 수가 총 2개이므로 2를 return 합니다.
3주차 : COS Pro숙제
파일 위치 > /woosuk/2021_비교과/COS Pro/3주차숙제
문제1
학생 10명이 상담을 받기 위해 매일 한 명씩, 순서대로 상담실을 찾아갑니다.
상담은 상담 선생님이 계실 때에만 상담을 받을 수 있습니다.
또한 한번 상담실을 방문한 학생은 다시 상담실에 찾아가지 않습니다.
선생님의 일정표가 주어질 때, 누가 상담을 받지 못했는지 알고 싶습니다. 일정표에는 선생님이 있는 날엔 "O"가, 없는 날엔 "X"가 표시됩니다.
예를 들어, 선생님의 일정이 ["O", "X", "X", "O", "O", "O", "X", "O", "X", "X"]라면 2번, 3번, 7번, 9번, 10번의 학생은 상담을 받지 못합니다.
선생님의 일정을 담은 리스트 schedule이 매개변수로 주어질 때, 상담을 받지 못한 학생의 번호를 오름차순으로 정렬하여 return 하도록 solution 함수를 작성하려 합니다.
빈칸을 채워 전체 코드를 완성해주세요.
매개변수 설명
선생님의 일정을 담은 리스트 schedule이 solution 함수의 매개변수로 주어집니다.
* schedule의 원소는 "O" 또는 "X"입니다.
* schedule은 길이가 10인 리스트입니다.
return값 설명
상담을 받지 못한 학생들의 번호를 오름차순으로 정렬하여 return합니다.
예시
| schedule | return |
|----|----|
| ["O", "X", "X", "O", "O", "O", "X", "O", "X", "X"] | [2, 3, 7, 9, 10] |
예시 설명
1일, 4일, 5일, 6일, 8일에만 선생님이 상담실에 있으므로 2번, 3번, 7번, 9번, 10번 학생은 상담을 받지 못합니다.
문제2
체력시험 합격 인원을 알아보려고 합니다.
체력시험 종목으로는 윗몸일으키기, 팔굽혀펴기, 달리기가 있습니다.
종목별 합격기준은 다음과 같습니다.
| 윗몸일으키기 | 팔굽혀펴기 | 달리기 |
|---|---|---|
| 80점 이상 | 88점 이상 | 70점 이상 |
* 통과한 종목이 하나 이하거나, 통과 점수의 반을 넘기지 못한 종목이 있다면 불합격입니다.
* 그 외에는 합격입니다.
시험에 합격한 인원을 구하기 위해 다음과 같이 프로그램 구조를 작성했습니다.
1. 통과한 종목이 몇 개인지 셉니다.
2. 통과 점수의 반을 넘기지 못한 종목이 몇 개인지 셉니다.
3. 통과한 종목이 하나보다 많고 통과 점수의 반을 넘기지 못한 종목이 없으면 통과한 인원으로 셉니다.
```
각 종목 기록을 담고 있는 리스트 scores가 매개변수로 주어질 때, 시험에 합격한 인원을 return 하도록 solution 함수를 작성하려 합니다.
위 구조를 참고하여 코드가 올바르게 동작할 수 있도록 빈칸에 주어진 func_a, func_b func_c 함수와 매개변수를 알맞게 채워주세요.
매개변수 설명
각 종목 기록을 담고 있는 리스트 scores가 solution 함수의 매개변수로 주어집니다.
* scores에는 윗몸일으키기, 팔굽혀펴기, 달리기 점수가 차례로 들어있습니다.
* scores의 원소는 0 이상 100 이하인 정수입니다.
* scores의 길이는 0 이상 10,000 이하인 정수입니다.
return값 설명
시험에 합격한 인원을 return합니다.
예시
| score | return |
|---|---|
| [[30, 40, 100], [97, 88, 95]] | 1 |
| [[90, 88, 70], [85, 90, 90], [100, 100, 70], [30, 90, 80], [40, 10, 20], [83, 88, 80]] | 4 |
예시 설명
예시 #1
1번째 사람은 윗몸일으키기 30점, 팔굽혀펴기 40점으로 합격 점수의 반을 통과하지 못해 불합격입니다.
2번째 사람은 윗몸일으키기 97점, 팔굽혀펴기 88점, 달리기 95점으로 모두 통과하여 합격입니다. 따라서 총 1명이 합격하였습니다.
예시 #2
1번째, 2번째, 3번째, 6번째 사람이 합격 기준을 만족하여 총 4명이 합격하였습니다.
문제3
A와 B가 카드 게임을 할 때, 누가 더 많은 점수를 획득했는지, 또 획득한 점수는 몇 점인지 알아보려고 합니다. 게임 규칙은 다음과 같습니다.
* 알파벳 a, b, c, d, e가 적힌 카드뭉치가 있습니다.
* A와 B가 서로 번갈아 가면서 n장씩 카드를 뽑습니다.
* 소유한 카드 점수를 합산합니다. 알파벳 카드 한 장당 a = 1점, b = 2점, c = 3점, d = 4점, e = 5점으로 점수를 계산합니다.
* 점수가 높은 사람이 승리합니다.
게임에서 이긴 사람과 획득 점수를 구하기 위해 다음과 같이 프로그램 구조를 작성했습니다.
1. A와 B가 번갈아가며 가져간 카드를 각각 리스트에 넣습니다.
2. A와 B가 각각 획득한 점수를 구합니다.
3. 획득한 점수가 큰 사람과 획득한 점수를 순서대로 리스트에 담아 return 합니다.
뽑아야 하는 카드 개수 n과 카드를 나타내는 문자열 bundle이 매개변수로 주어질 때, 이긴 사람과 점수를 return 하도록 solution 함수를 작성하려 합니다.
위 구조를 참고하여 코드가 올바르게 동작할 수 있도록 빈칸에 주어진 func_a, func_b, func_c 함수와 매개변수를 알맞게 채워주세요.
매개변수 설명
뽑아야 하는 카드 개수 n과 카드를 나타내는 문자열 bundle이 solution함수의 매개변수로 주어집니다.
* n은 1 이상 25 이하인 자연수입니다.
* bundle은 모두 알파벳 소문자입니다.
* bundle의 길이는 2이상 2*n이하입니다.
return값 설명
이긴 사람과 획득한 점수를 return합니다.
A가 이겼을 경우에는 1, B가 이겼을 경우에는 2, 무승부일 경우에는 0을 return 해주세요.
예시
| n | bundle | return |
|---|---|---|
| 4 | "cacdbdedccbb" | [0, 13] |
예시 설명
A는 c, c, b, e 카드를 뽑았고 B는 a, d, d, d 카드를 뽑았습니다.
A가 획득한 점수는 13점이고 B가 획득한 점수는 13점입니다. 둘다 13점을 획득하여 게임은 무승부로 끝납니다.
문제4
프로그래밍 수업 n개를 동시에 진행할 때, 필요한 조교 수를 알아보려고 합니다.
조교 1명이 m명의 학생을 담당합니다.
교실별 학생 수 classes, 조교 1명이 담당하는 학생 수 m이 매개변수로 주어질 때,
수업을 진행하기 위한 조교 수를 return 하는 solution 함수를 작성하려 합니다.
빈칸을 채워 전체 코드를 완성해주세요.
매개변수 설명
교실별 학생 수 classes, 조교 1명이 담당하는 학생 수 m이 solution 함수의 매개변수로 주어집니다.
* classes의 원소는 0이상 1,000이하인 정수입니다.
* classes의 길이는 1이상 1,000이하인 자연수입니다.
* m은 1이상 1,000이하인 자연수입니다.
return값 설명
수업을 진행하기 위한 조교 수를 return합니다.
예시
| classes | m | return |
|---|---|---|
| [80, 45, 33, 20] | 30 | 8 |
예시 설명
예시 #1
반마다 학생 수가 80명, 45명, 33명, 20명이고 조교 1명이 학생 30명을 담당합니다.
반마다 필요한 조교 수는 3명, 2명, 2명, 1명으로 총 8명의 조교가 필요합니다.
문제5
열량이 적힌 식단표가 있습니다.
다이어트를 하는 A 씨는 오늘 먹는 열량이 그동안 먹은 식단의 열량 중 최솟값보다 큰 경우 운동을 하여 그 차이만큼을 소모합니다.
예를 들어, 식단의 열량이 [713, 665, 873, 500, 751]이라면 둘째 날까지는 운동을 하지 않습니다.
셋째 날 식단의 열량이 873이고 그 전의 먹은 열량의 최솟값이 665이므로 208 열량을 소모하기 위한 운동을 합니다.
넷째 날은 운동을 하지 않고 다섯째 날 식단의 열량이 751이고 그 전의 먹은 열량의 최솟값이 500이므로 251 열량을 소모하기 위한 운동을 합니다.
따라서 운동으로 소모하는 총열량은 459입니다.
식단의 열량을 담고 있는 리스트 calorie가 매개변수로 주어질 때, 운동으로 소모하는 총열량을 return 하도록 solution 함수를 작성했습니다.
그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다.
주어진 코드에서
**한 줄**만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.
매개변수 설명
식단의 열량을 담고 있는 리스트 calorie가 solution 함수의 매개변수로 주어집니다.
* calorie의 각 원소는 0보다 크고 1,000보다 작거나 같은 자연수입니다.
* calorie의 길이는 0보다 크고 100보다 작거나 같은 자연수입니다.
return 값 설명
운동으로 소모하는 총열량을 return 해주세요.
예시
| calorie | return |
|---------------------------|--------|
| [713, 665, 873, 500, 751] | 459 |
예시 설명
문제의 예와 같습니다.
문제6
적립된 포인트를 최대한으로 사용하려고 합니다. 포인트를 사용하는 규칙은 다음과 같습니다.
* 포인트는 100포인트 단위로 사용합니다.
* 1000포인트 이상 있을 때만 포인트를 사용할 수 있습니다.
적립된 포인트 point가 매개변수로 주어질 때, 최대 몇 포인트를 쓸 수 있는지 return 하도록 solution 함수를 작성했습니다.
그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다.
주어진 코드에서
**한 줄**만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.
매개변수 설명
적립된 포인트 point가 solution함수의 매개변수로 주어집니다.
* point는 0 이상 1,000,000 이하인 정수입니다.
return 값 설명
최대 몇 포인트를 쓸 수 있는지 return합니다
예시
| point | return |
|-------|-------|
| 2323 | 2300 |
예시 설명
적립된 포인트가 2323포인트라면 최대로 사용 가능한 포인트는 2300포인트입니다.
문제7
중간시험 점수와 기말시험 점수가 있습니다.
이를 바탕으로 점수가 가장 많이 오른 학생의 점수 차이와 가장 많이 떨어진 학생의 점수 차이를 구하려 합니다.
이를 위해 다음과 같이 프로그램 구조를 작성했습니다.
1. 각 학생에 대하여 기말고사 점수에서 중간고사 점수를 뺀 값의 최댓값을 구합니다.
2. 각 학생에 대하여 기말고사 점수에서 중간고사 점수를 뺀 값의 최솟값을 구합니다.
3. 1번과 2번 과정에서 구한 점수를 리스트에 담아 return 합니다.
예를 들어 중간시험 점수가 [20, 50, 40]이고, 기말시험 점수가 [10, 50, 70]이면, 학생의 시험 점수 차이는 [-10, 0, 30]입니다.
따라서 성적이 가장 많이 오른 학생은 30점이 올랐습니다. 그리고 성적이 가장 많이 떨어진 학생은 10점이 떨어졌습니다.
학번순으로 중간시험 점수를 담은 리스트 mid_scores와 학번순으로 기말시험 점수를 담은 리스트 final_scores가 solution 함수의 매개변수로 주어집니다.
이 때 성적이 가장 많이 오른 학생의 점수 차이를 **리스트 첫 번째 원소** 로, 성적이 가장 많이 떨어진 학생의 점수 차이를 **두 번째 원소** 로 담은 리스트를 return 하도록 solution 함수를 작성했습니다.
그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다.
주어진 코드에서
**한 줄**만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.
매개변수 설명
학번순으로 중간시험 점수를 담은 리스트 mid_scores와 학번순으로 기말시험 점수를 담은 리스트 final_scores가 solution 함수의 매개변수로 주어집니다.
* 시험 점수는 100 이하인 자연수입니다.
* mid_scores의 길이는 5 이상 50 이하입니다.
* 리스트 mid_scores의 길이와 리스트 final_scores의 길이는 같습니다.
return 값 설명
성적이 가장 많이 오른 학생의 점수 차이를 **리스트 첫 번째 원소** 로 하고, 성적이 가장 많이 떨어진 학생의 점수 차이를 **두 번째 원소** 로 담은 리스트를 return 해주세요.
* 점수가 오른 학생이 없으면 첫 번째 원소에 0을 넣고, 점수가 떨어진 학생이 없으면 두 번째 원소에 0을 넣도록 합니다.
예시
| mid_scores |final_scores |return |
|---|---|---|
| [20, 50, 40] | [10, 50, 70]|[30, -10]|
문제8
1번부터 n번까지의 후보에 대한 투표 결과가 주어질 때, 과반수를 득표한 후보자의 번호를 구하려고 합니다.
여기서 과반수란 절반이 넘는 수를 의미합니다.
예를 들어, 1번부터 3번까지의 후보에 대한 투표 결과가 [1, 2, 1, 3, 1, 2, 1]이라면 순서대로 [1번, 2번, 1번, 3번, 1번, 2번, 1번] 후보에 투표했음을 나타내고, 이 경우 당선된 후보자의 번호는 1번입니다.
후보의 수 n, 투표 결과가 담긴 리스트 votes가 매개변수로 주어질 때, 과반수를 득표한 후보자의 번호를 return 하도록 solution 함수를 작성했습니다.
그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 작동하지 않습니다.
주어진 코드에서
**한 줄**만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.
매개변수 설명
후보의 수 n, 투표 결과가 담긴 리스트 votes가 solution 함수의 매개변수로 주어집니다.
* n은 1 이상 100 이하의 자연수입니다.
* votes의 길이는 1 이상 1,000 이하의 자연수입니다.
* votes의 각 원소는 1 이상 n 이하의 자연수입니다.
return 값 설명
과반수를 득표한 후보자의 번호를 return 해주세요.
* 만약, 과반수를 득표한 후보자가 없다면 -1을 return 해주세요.
예시
| n | votes | return |
|---|------|--------|
| 3 | [1,2,1,3,1,2,1] | 1 |
| 2 | [2,1,2,1,2,2,1] | 2 |
예시 설명
예시 #1
1번부터 3번까지의 후보 3명이 있으며, 투표 결과는 [1, 2, 1, 3, 1, 2, 1]입니다.
총 투표 수는 7표이며, 1번 후보가 4표, 2번 후보가 2표, 3번 후보가 1표씩 받았습니다.
이 경우, 1번 후보가 과반수를 득표하였으므로 1을 return 합니다.
예시 #2
1번부터 2번까지의 후보 2명이 있으며, 투표 결과는 [2, 1, 2, 1, 2, 2, 1]입니다.
총 투표 수는 7표이며, 1번 후보는 3표, 2번 후보는 4표를 받았습니다.
이 경우, 2번 후보가 과반수를 득표하였으므로 2를 return 합니다.
문제9
4 x 4 크기 격자 모양 지형에 위험 지역이 몇 개인지 알고 싶습니다.
위험지역이란 동, 서, 남, 북 인접한 지역이 모두 해당 지역보다 높은 지역입니다.
예를 들어 지역 높이가 아래와 같다면 빨간 영역은 인접한 지역이 모두 해당 지역보다 높은 위험지역입니다.
지역별 높이가 담긴 2차원 리스트 height가 solution 함수의 매개변수로 주어질 때, 위험 지역이 몇 개인지 return 하도록 solution 함수를 완성해주세요.
매개변수 설명
지역별 높이가 담긴 2차원 리스트 height가 solution 함수의 매개변수로 주어집니다.
* 각 지역의 높이는 1 이상 50 이하인 자연수입니다.
return 값 설명
위험지역이 몇 개인지 return 해주세요.
예시
| height | return |
|----------------------------------------------------------|--------|
| [[3, 6, 2, 8], [7, 3, 4, 2], [8, 6, 7, 3], [5, 3, 2, 9]] | 5 |
#####예시 설명
문제에 나온 예와 같습니다.
문제10
XX 시험을 친 수험생들의 점수가 주어질 때, 합격자 수를 구하려 합니다.
시험에 합격하기 위해서는 커트라인 이상의 점수를 받아야 합니다.
예를 들어 수험생들의 점수가 [80점, 90점, 55점, 60점, 59점]이고, 커트라인이 60점이라면 3명이 합격했습니다.
수험생들의 시험 점수가 들어있는 리스트 scores, 커트라인 점수 cutline이 매개변수로 주어질 때, 합격자 수를 return 하도록 solution 함수를 완성해주세요.
매개변수 설명
수험생들의 시험 점수가 들어있는 리스트 scores, 커트라인 점수 cutline이 solution 함수의 매개변수로 주어집니다.
* scores의 원소는 각 학생의 시험 점수를 나타내며 0 이상 100 이하의 정수입니다.
* scores의 길이는 1 이상 100 이하입니다.
* cutline은 0 이상 100 이하의 정수입니다.
return 값 설명
합격자의 수를 return 합니다.
예시
| scores | cutline | result |
|----------------------|---------|--------|
| [80, 90, 55, 60, 59] | 60 | 3 |
##### 예시 설명
예시 #1
* 80점, 90점, 60점은 합격입니다.
* 55점, 59점은 불합격입니다.
따라서 3명이 합격했습니다.
4주차 : COS Pro연습
문제1
6명이 사다리 게임을 할 때, 몇 번째 위치에서 시작하는 사람이 상품을 타는지 알고 싶습니다.
가로줄은 항상 인접한 세로줄만 연결할 수 있으며 주어진 순서대로 위에서부터 연결합니다.
예를 들어, 아래 사다리의 가로줄은 [[1, 2], [3, 4], [2, 3], [4, 5], [5, 6]] 으로 표현합니다.
이때 1번째 위치에서 시작한 사람이 상품을 탑니다.
가로줄의 위치가 담긴 2차원 리스트 ladders와 상품의 위치 win이 매개변수로 주어질 때, 당첨자의 시작 위치를 return 하도록 solution 함수를 작성하려 합니다.
빈칸을 채워 전체 코드를 완성해주세요.
매개변수 설명
가로줄의 위치가 담긴 2차원 리스트 ladders와 상품이 있는 위치 win이 solution 함수의 매개변수로 주어집니다.
* 가로줄의 개수는 1 이상 20 이하인 자연수입니다.
* win은 1 이상 6 이하인 자연수입니다.
* 가로줄은 항상 연결할 수 있는 형태만 주어집니다.
return 값 설명
승리하는 사람의 시작 위치를 return 합니다.
예시
| ladders | win | return |
|------------------------------------------|-----|--------|
| [[1, 2], [3, 4], [2, 3], [4, 5], [5, 6]] | 3 | 1 |
사다리 게임은 먼저 사람 수만큼 세로줄을 긋고 한쪽 편에는 이름을 쓰고 반대쪽에는 상품 위치를 씁니다.
서로 인접한 세로줄 사이에 가로줄을 무작위로 그은 다음 세로줄을 타고 내려가면서 가로줄을 만날 때마다 가로줄로
연결된 다른 세로줄로 가는 게임입니다.
문제2
공강이란 수업 시간 사이에 수업이 없이 비는 시간입니다.
시간표가 주어질 때 공강은 총 몇 시간인지 구하려 합니다.
시간표 상에 수업이 있는 시간은 1로, 수업이 없는 시간은 0으로 표시합니다.
모든 수업은 정각에 시작해 1시간 뒤에 끝납니다.
예를 들어, 위 시간표에서 공강은 총 3시간입니다.
공강이 총 몇 시간인지 구하기 위해 다음과 같이 프로그램 구조를 작성했습니다.
1. 가장 첫 수업 시작 시각을 구합니다.
2. 가장 마지막 수업 시작 시각을 구합니다.
3. 1과 2사이에서 수업이 없는 시간을 셉니다.
시간표를 표현한 리스트 time_table이 매개변수로 주어질 때 공강은 총 몇 시간인지 return 하도록 solution 함수를 작성하려 합니다.
위 구조를 참고하여 코드가 올바르게 동작할 수 있도록 빈칸에 주어진 func_a, func_b, func_c 함수와 매개변수를 알맞게 채워주세요.
매개변수 설명
시간표를 표현한 리스트 time_table이 solution 함수의 매개변수로 주어집니다.
* time_table은 길이가 5 이상 15 이하인 리스트입니다.
* 시간표에서 수업이 있는 시간은 1로 표현하고 수업이 없는 시간은 0입니다.
* time_table의 원소는 0 또는 1입니다.
return 값 설명
공강이 총 몇 시간인지 return 해주세요.
예시
| time_table | return |
|--------------------------------|--------|
| [1, 1, 0, 0, 1, 0, 1, 0, 0, 0] | 3 |
예시 설명
문제에 나온 예와 같습니다.
문제3(벌금 낼꺼 아직도 있음 ㅠㅠ)
모든 속도위반 차량이 낼 벌금이 총 몇만 원인지 알아내려 합니다. 벌금을 매기는 기준은 다음과 같습니다.v
| 기준 | 벌금 |
|---------------------------------|-------|
| 규정 속도 10% 이상 20% 미만 위반 | 3만 원 |
| 규정 속도 20% 이상 30% 미만 위반 | 5만 원 |
| 규정 속도 30% 이상 위반 | 7만 원 |
예를 들어 규정 속도가 100인 도로를 112로 달렸다면 규정 속도를 12% 위반하였습니다.
따라서 규정 속도를 10% 이상 20% 미만 위반하였으므로 벌금 3만 원을 부과합니다.
규정 속도 speed와 도로를 달리는 모든 차의 속도가 담긴 리스트 cars가 매개변수로 주어질 때, 총벌금은 몇만 원인지 return 하도록 solution 함수를 작성하려 합니다.
빈칸을 채워 전체 코드를 완성해주세요.
매개변수 설명
규정 속도 speed와 도로를 달리는 모든 차의 속도가 담긴 리스트 cars가 solution 함수의 매개변수로 주어집니다.
* 규정 속도는 30 이상 140 이하이며, 10으로 나누어 떨어지는 숫자입니다.
* 도로를 달리는 차의 수는 1대 이상 40대 이하입니다.
* 모든 차는 0km/h 이상 200km/h 이하로 달립니다.
return 값 설명
도로를 달리는 모든 차의 벌금은 총 몇만 원인지 return 해주세요.
예시
| speed | cars | return |
|-------|------------------------------------|--------|
| 100 | [110, 98, 125, 148, 120, 112, 89] | 23 |
예시 설명
| 기준 | 위반 차량 | 총벌금 |
|----------------------------------|-----------|---------|
| 규정 속도 10% 이상 20% 미만 위반 | 2대 | 6만원 |
| 규정 속도 20% 이상 30% 미만 위반 | 2대 | 10만원 |
| 규정 속도 30% 이상 위반 | 1대 | 7만원 |
문제4
종목은 태권도, 500m 달리기, 사격 경기를 하려 합니다.
종목별 점수 산출 방식은 다음과 같습니다.
| 종목 | 점수 산출 방식 |
|-------------|----------------------------------------------------------------------------------------|
| 태권도 | 25경기 이상 승리하면 250점. 그 외에는 승리당 8점 |
| 500m 달리기 | 60초에 완주 시 250점. 그보다 빠르면 1초당 +5점 느리면 1초당 -5점 |
| 사격 | 10번 사격해 과녁에 적힌 숫자의 합만큼 점수 획득. 7번 이상 10점에 맞추면 추가 점수 100점 |
태권도에서 승리한 횟수 taekwondo, 달리기 기록 running, 사격 기록이 담긴 리스트 shooting이 매개변수로 주어질 때,
이 선수가 획득한 총점수를 return 하도록 solution 함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.
매개변수 설명
태권도에서 승리한 횟수 taekwondo, 달리기 기록 running, 사격 기록이 담긴 리스트 shooting이 solution 함수의 매개변수로 주어집니다.
* 태권도에서는 0회 이상 35회 이하 승리할 수 있습니다.
* 달리기 기록은 초 단위이며 40 이상 120 이하인 정수입니다.
* 사격은 총 10번 하며, 과녁에는 0부터 10까지의 숫자가 적혀있습니다.
return 값 설명
이 선수가 획득한 총점수를 return 해주세요.
예시
| taekwondo | running | shooting | return |
|-----------|---------|---------------------------------------|--------|
| 27 | 63 | [9, 10, 8, 10, 10, 10, 7, 10, 10, 10] | 679 |
예시 설명
태권도에서 25회 이상 승리했기 때문에 250점을 획득했습니다.
달리기에서 60초보다 3초 느렸기 때문에 250점에서 15점을 뺀 235점을 획득했습니다.
사격에서 과녁을 맞혀 94점을 받았고, 10점을 7번 맞췄기 때문에 추가 점수 100점을 받아 총 194점을 획득했습니다.
따라서 이 선수가 받은 총점수는 679점입니다.
문제5
O일장은 O일마다 열리는 시장을 뜻합니다.
예를 들어 오늘 4일장이 열렸다면, 다음 4일장은 4일 뒤에 열립니다.
오늘부터 a일장과 b일장 제도를 시행하려 합니다. 정수 a, b가 주어졌을 때,
a일장과 b일장이 같이 열리는 날은 며칠에 한 번씩 있는지 구하려 합니다.
예를 들어, a가 4이고 b가 6이라면 시장은 다음과 같이 열립니다.
a와 b가 매개변수로 주어질 때, a일장과 b일장이 같이 열리는 날은 며칠에 한 번씩 있는지 return 하도록 solution 함수를 작성했습니다.
그러나, 그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다.
주어진 코드에서 **한 줄**만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.
매개변수 설명
a일장이 열리는 주기인 a와 b일장이 열리는 주기인 b가 solution 함수의 매개변수로 주어집니다.
* a와 b는 1 이상 30 이하인 자연수입니다.
return 값 설명
a일장과 b일장이 같이 열리는 날은 며칠에 한 번씩 있는지 return 해주세요.
예시
| a | b | return |
|--------|--------|--------|
| 4 | 6 | 12 |
예시 설명
문제의 예와 같습니다.
문제6
국어 시험 점수와 영어 시험 점수가 나왔습니다.
이때 국어, 영어, 수학 시험의 평균이 70점 이상이려면 수학 시험 점수가 최소 몇 점이어야 하는지 알고 싶습니다.
국어 점수 korean과 영어 점수 english가 매개변수로 주어질 때, 평균 점수를 70점 이상 받기 위해 받아야 하는 수학 점수의 최솟값을 return 하도록 solution 함수를 작성했습니다.
그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다.
주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.
매개변수 설명
국어 점수 korean과 영어 점수 english가 solution 함수의 매개변수로 주어집니다.
* korean과 english는 0 이상 100 이하인 정수입니다.
return 값 설명
평균 70점을 넘기기 위해 받아야 하는 수학 점수의 최솟값을 return 합니다.
* 수학 점수를 100점을 받아도 평균 70점이 되지 않는 경우에는 -1을 return 합니다.
예시
| korean | english | return |
|--------|---------|--------|
| 70 | 60 | 80 |
예시 설명
국어 점수가 70점, 영어 점수가 60점입니다.
따라서 평균이 70점 이상을 받으려면 수학 시험에서 최소 80점을 받아야 합니다.
문제7
XX 마트에선 구매할 물건이 3개 이하이면 소량 계산대에서, 그렇지 않으면 일반 계산대에서 계산해야 합니다.
두 계산대 모두 물건 한 개를 계산하는 데 1분이 걸립니다.
손님들이 구매할 물건 수가 담긴 리스트 stuffs가 매개변수로 주어질 때,
모든 물건을 계산하는 데 필요한 시간을 return 하도록 solution 함수를 작성했습니다.
그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다.
주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.
매개변수 설명
손님들이 구매할 물건 수가 담긴 리스트 stuffs가 solution 함수의 매개변수로 주어집니다.
* 계산을 할 손님은 1명 이상 100명 이하입니다.
* 손님이 구입할 물건은 1개 이상 20개 이하입니다.
return 값 설명
모든 물건을 계산하는데 걸리는 시간을 return 해주세요.
예시
| stuffs | return |
|--------------------|--------|
| [5, 3, 4, 2, 3, 2] | 10 |
예시 설명
첫 번째 손님, 세 번째 손님은 일반 계산대에서 계산합니다. 이때 9분이 걸립니다.
두 번째, 네 번째, 다섯 번째, 여섯 번째 손님은 소량 계산대에서 계산합니다. 이때 10분이 걸립니다.
따라서 모든 물건을 계산하는데 걸리는 시간은 10분입니다.
문제8
상수도 요금을 계산하려 합니다. 가정용 상수도 사용요금 계산방법은 아래와 같습니다.
| 단계 | 사용량 | 요금 |
|-------|-----------|-------|
| 1단계 | 0~20톤 | 430원 |
| 2단계 | 21~30톤 | 570원 |
| 3단계 | 31톤 이상 | 840원 |
사용료는 사용량에 따라 단계별로 적용됩니다.
예를 들어, 물을 35톤 사용했다면 다음과 같은 방식으로 계산합니다.
* 1단계 적용 : 20톤 x 430원 = 8,600원
* 2단계 적용 : 10톤 x 570원 = 5,700원
* 3단계 적용 : 5톤 x 840원 = 4,200원
총 사용요금 : 18,500원
상수도 사용량 usage가 매개변수로 주어질 때, 사용요금을 return 하도록 solution 함수를 작성했습니다.
그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다.
주어진 코드에서 **한 줄**만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.
매개변수 설명
상수도 사용량 usage가 solution 함수의 매개변수로 주어집니다.
* 상수도 사용량은 0톤 이상 100톤 이하인 정수입니다.
return 값 설명
사용요금을 return 해주세요.
예시
| usage | return |
|-------|--------|
| 35 | 18500 |
예시 설명
문제에 나온 예와 같습니다.
문제9
시험 점수에 따라 학생의 순위를 매기려 합니다.
동점자 순위는 가능한 순위 중 가장 높은 순위로 매깁니다.
예를 들어 학생별 점수가 [90, 87, 87, 23, 35, 28, 12, 46]이면, 학생별 순위는 [1, 2, 2, 7, 5, 6, 8, 4]입니다.
모든 학생의 점수를 담은 리스트 score가 매개변수로 주어질 때, 순위를 담은 리스트를 return 하도록 solution 함수를 작성해주세요.
매개변수 설명
모든 학생의 점수를 담은 리스트 score가 solution 함수의 매개변수로 주어집니다.
* 학생 수는 1명 이상 1,000명 이하입니다.
* 점수는 1 이상 100 이하인 정수입니다.
return 값 설명
* 순위를 담은 리스트를 return 합니다.
예시
| score |return |
|---|---|
| [90, 87, 87, 23, 35, 28, 12, 46] | [1, 2, 2, 7, 5, 6, 8, 4] |
| [10, 20, 20, 30] | [4, 2, 2, 1] |
예시 설명
예시 #1
문제에 나온 예와 같습니다.
예시 #2
이들의 순위는 [4, 2, 2, 1]입니다.
Hint > map()함수와 lambda()함수 이해
문제10
n명이 시간표에 따라 교대 근무에 들어갑니다.
이때 가장 오래 일한 사람이 몇 시간 일했는지 알아내려 합니다.
근무 순번은 첫 번째 사람부터 n번째 사람 순으로 합니다.
n번 사람이 일을 한 뒤에는 다시 첫 번째 사람부터 일을 합니다.
예를 들어 시간표가 [1, 5, 1, 9]이고 n이 3이면 첫 번째 사람은 1+9시간, 두 번째 사람은 5시간, 세 번째 사람은 1시간 근무합니다.
따라서 첫 번째 사람이 가장 오래 일했으며, 10시간 일했습니다.
근무 시간표를 담은 리스트 time_table과 사람 수 n이 매개변수로 주어질 때,
가장 오래 일한 사람은 몇 시간 일했는지 return 하도록 solution 함수를 작성해주세요.
매개변수 설명
시간표를 담은 리스트 time_table과 사람 수 n이 solution 함수의 매개변수로 주어집니다.
* time_table의 길이는 1 이상 100 이하입니다.
* time_table의 원소는 1 이상 100 이하인 자연수입니다.
* n은 1 이상 `time_table의 길이` 이하인 자연수입니다.
return 값 설명
가장 오래 일한 사람이 몇 시간 일했는지 return 합니다.
예시
| time_table |n|return |
|---|---|------|
|[1, 5, 1, 9] |3| 10|
| [4, 8, 2, 5, 4, 6, 7]|4 | 14|
예시 설명
예시 #1
앞선 예와 같습니다.
예시 #2
첫 번째 사람은 4+4시간만큼 근무를 합니다.
두 번째 사람은 8+6시간만큼 근무를 합니다.
세 번째 사람은 2+7시간만큼 근무를 합니다.
네 번째 사람은 5시간만큼 근무를 합니다.
따라서, 가장 오래 근무를 한 사람은 14시간 일했습니다.
4주차 : COS Pro과제
문제1
n일 동안 매일매일의 평균 기온이 순서대로 들어있는 리스트이 있습니다.
이때, A 번째 일과 B 번째 일 사이에서 A, B 번째 일보다 기온이 높았던 날은 총 며칠이었는지 구하려 합니다.
n일 동안 매일매일의 평균 기온이 순서대로 들은 리스트 temperature, 두 날짜를 나타내는 자연수 A, B가 매개변수로 주어질 때,
A 번째 일과 B 번째 일 사이에서 두 날짜보다 기온이 높았던 날은 총 며칠인지 return 하도록 solution 함수를 작성했습니다.
그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다.
주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.
매개변수 설명
n일 동안 매일매일의 평균 기온이 순서대로 들은 리스트 temperature, 두 날짜를 나타내는 자연수 A, B가 solution 함수의 매개변수로 주어집니다.
* temperature의 길이는 3 이상 30 이하입니다.
* temperature의 원소는 -30 이상 50 이하인 정수입니다.
* 날짜는 0번째 일부터 시작합니다.
* 즉, temperature의 첫 번째 원소는 0번째 날, 두 번째 원소는 1번째 날 ... 을 의미합니다.
* A, B는 날짜를 나타내는 정수이며, 0 이상 (temperature의 길이 - 1) 이하입니다.
* A는 B보다 항상 작습니다.
return 값 설명
A 번째 일과 B 번째 일 사이에서 두 날짜보다 기온이 높았던 날은 총 며칠인지 return 해주세요.
예제
| temperature | A | B | return |
|--------------------------|---|---|--------|
| [3, 2, 1, 5, 4, 3, 3, 2] | 1 | 6 | 2 |
예제 설명
예제 #1
* 1번째 날 온도는 2입니다.
* 6번째 날 온도는 3입니다.
* 두 날짜 사이에서 두 날짜보다 기온이 높았던 날은 3번째, 4번째 날입니다.
따라서 2를 return 하면 됩니다.
문제2
한 줄로 서 있는 사람들에게 종이를 다음과 같은 방법으로 나눠주려 합니다.
* 종이 K 장을 맨 앞사람에게 줍니다.
* 맨 앞사람은 자신이 필요한만큼 종이를 챙긴 후, 남은 종이를 뒷사람한테 전달합니다.
* 뒷사람 또한 자신이 필요한만큼 종이를 챙긴 후, 남은 종이를 뒷사람에게 전달합니다.
* 전달할 종이가 없거나, 모든 사람이 필요한 만큼 종이를 가질 때까지 계속해서 뒷사람에게 남은 종이를 전달합니다.
한 줄로 서 있는 사람들이 각자 필요로 하는 종이 수가 순서대로 들어있는 리스트 papers, papers의 길이 papers_len, 처음에 맨 앞사람에게 전달한 종이 수 K가 매개변수로 주어질 때,
필요한 만큼의 종이를 받은 사람은 모두 몇 명인지 return 하도록 solution 함수를 작성했습니다.
그러나, 코드 일부분이 잘못되어 있기 때문에 몇몇 입력에 대해서는 올바르게 동작하지 않습니다.
주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.
매개변수 설명
한 줄로 서 있는 사람들이 각자 필요로 하는 종이 수가 순서대로 들어있는 리스트 papers, papers의 길이 papers_len,
처음에 맨 앞사람에게 전달한 종이 수 K가 solution 함수의 매개변수로 주어집니다
* papers의 각 원소는 1 이상 20 이하인 자연수입니다.
* papers_len은 1 이상 20 이하입니다.
* K는 1 이상 400 이하인 자연수입니다.
return 값 설명
필요한 만큼의 종이를 받은 사람은 모두 몇 명인지 return 해주세요.
예시
| papers | papers_len | K | return |
|-----------------|------------|----|--------|
| [2, 4, 3, 2, 1] | 5 | 10 | 3 |
| [2, 4, 3, 2, 1] | 5 | 14 | 5 |
예시 설명
예시 #1
맨 앞 사람부터 순서대로 [2장, 4장, 3장, 2장, 1장]의 종이가 필요합니다.
* 맨 앞사람이 종이 2장을 가지고 남은 8장을 뒷사람에게 넘깁니다.
* 두 번째 사람이 종이 4장을 가지고 남은 4장을 뒷사람에게 넘깁니다.
* 세 번째 사람이 종이 3장을 가지고 남은 1장을 뒷사람에게 넘깁니다.
* 네 번째 사람은 종이 2장이 필요한데 넘어온 종이는 1장이므로 원하는 종이 개수만큼 가질 수 없습니다.
* 나머지 사람들도 종이를 원하는 개수만큼 가질 수 없습니다.
따라서 필요한 만큼의 종이를 받는 사람은 3명입니다.
예시 #2
모든 사람이 필요한 만큼의 종이를 받을 수 있습니다.
문제3
단체 유니폼을 주문하려고 합니다. 사람들의 덩치를 수치로 표현할 때 주문해야 하는 유니폼의 사이즈는 다음과 같습니다.
| 덩치 | 사이즈 |
|-------------------|--------|
| 95 미만 | S |
| 95 이상 100 미만 | M |
| 100 이상 105 미만 | L |
| 105 이상 | XL |
사람들의 덩치를 담은 리스트 people이 매개변수로 주어질 때,
주문해야 하는 유니폼 사이즈의 수를 [S, M, L, XL] 순으로 리스트에 담아 return 하도록 solution 함수를 작성해주세요.
매개변수 설명
사람들의 덩치를 담은 리스트 people이 solution 함수의 매개변수로 주어집니다.
* people의 길이는 1 이상 100 이하인 자연수입니다.
* 사람들의 덩치는 80 이상 120 이하인 자연수입니다.
return 값 설명
주문해야 하는 유니폼 사이즈의 수를 [S, M, L, XL] 순으로 리스트에 담아 return 합니다.
예시
| people | return |
|-------------------------|--------------|
| [97, 102, 93, 100, 107] | [1, 1, 2, 1] |
예시 설명
3번째 사람은 S 사이즈를 입어야합니다.
1번째 사람은 M 사이즈를 입어야합니다.
2, 4번째 사람은 L 사이즈를 입어야합니다.
5번째 사람은 XL 사이즈를 입어야합니다.
문제4
카드를 3장 뽑아 점수를 내는 게임을 하려고 합니다. 각 카드는 색이 칠해져 있고, 숫자가 적혀 있습니다.
획득한 점수를 계산하는 규칙은 다음과 같습니다.
1. 카드 3장의 색이 모두 같다면 획득한 점수는 적힌 숫자의 총합에 3을 곱한 값입니다.
2. 카드 2장의 색이 같고, 1장의 색이 다르다면 획득한 점수는 적힌 숫자의 총합에 2를 곱한 값입니다.
3. 카드 3장의 색이 모두 다르다면 획득한 점수는 적힌 숫자의 총합입니다.
뽑은 카드의 색과 숫자를 문자열로 담은 2차원 리스트 cards가 매개변수로 주어질 때,
획득한 총 점수를 return 하도록 solution 함수를 작성해주세요.
매개변수 설명
뽑은 카드의 색과 숫자를 문자열로 담은 2차원 리스트 cards가 solution 함수의 매개변수로 주어집니다.
* cards는 3x2 크기인 2차원 리스트입니다.
* cards의 각 원소는 [색, 숫자] 입니다.
* 카드의 색은 ["red", "black", "blue"] 중 하나입니다.
* 카드에 적힌 숫자는 1 이상 9 이하인 자연수입니다.
return 값 설명
획득한 총 점수를 return 합니다.
예제
| cards | return |
|------------------------------------------------|--------|
| [["blue", "2"], ["red", "5"], ["black", "3"]] | 10 |
| [["blue", "2"], ["blue", "5"], ["black", "3"]] | 20 |
예제 설명
예제 #1
모든 카드 색이 모두 다르기 때문에 획득한 점수는 적힌 숫자의 총합인 10 입니다.
예제 #2
두 카드 색이 같고, 1장의 색이 다릅니다. 따라서’ 획득한 점수는 적힌 숫자의 총합에 2를 곱한 20 입니다.
문제5
X 마트에서는 빈 병 n개와 음료수 한 병을 교환해줍니다.
예를 들어, 현재 가진 돈이 8원, 음료수 한 병은 2원이고 n이 4라면 음료수 4개를 살 수 있습니다. 음료수 네개를 다 마신 후,
남은 빈 병 4개를 가져가면 음료수를 한 병 더 받을 수 있습니다. 따라서 8원으로는 음료수를 총 5병 마실 수 있습니다.
가진 돈 money, 음료수 한 병의 가격 price, 음료수 한 병과 교환하는데 필요한 빈 병의 수 n이 매개변수로 주어질 때,
마실 수 있는 총 음료수의 수를 return 하도록 solution 함수를 작성했습니다. 그러나, 코드 일부분이 잘못되어있기 때문에,
몇몇 입력에 대해서는 올바르게 동작하지 않습니다.
주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.
매개변수 설명
가진 돈 money, 음료수 한 병의 가격 price, 음료수 한 병과 교환하는데 필요한 빈 병의 수 n이 solution 함수의 매개변수로 주어집니다.
* 가진 돈 money는 1 이상 1,000 이하인 자연수입니다.
* 음료수 한 병의 가격 price는 1 이상 100 이하인 자연수입니다.
* 음료수 한 병과 교환하는데 필요한 빈 병의 수 n은 3 이상 10 이하인 자연수입니다.
return 값 설명
마실 수 있는 총 음료수의 수를 return 해주세요.
예제
| money | price | n | return |
|-------|-------|---|--------|
| 8 | 2 | 4 | 5 |
| 6 | 2 | 2 | 5 |
예제 설명
예제 #1
문제에 나온 예와 같습니다.
예제 #2
1. 6원으로 2원짜리 음료수 3개를 삽니다.
2. 음료를 다 마시면 빈 병 3개가 남습니다. 이 중 빈 병 두개를 가져가 새 음료수 한 병과 교환합니다.
3. 음료를 마시면 빈 병 2개가 남습니다. 이를 새 음료수 한 병으로 교환합니다.
따라서 총 6원으로는 음료수 5병을 마실 수 있습니다.
문제6
X 사이트에서는 회원가입을 할 때 다음의 규칙을 지켜 비밀번호를 생성해야 합니다.
1. 한 개 이상의 알파벳 대문자를 포함해야 합니다.
2. 두 개 이상의 알파벳 소문자를 포함해야 합니다.
3. 두 개 이상의 숫자를 포함해야 합니다.
생성하고자 하는 비밀번호 password가 매개변수로 주어질 때, 생성가능한 비밀번호면 true를 그렇지 않으면 false를 return 하도록 solution 함수를 작성하려 합니다.
빈칸을 채워 전체 코드를 완성해주세요.
매개변수 설명
생성하고자 하는 비밀번호 password가 solution 함수의 매개변수로 주어집니다.
* password는 알파벳 대문자, 소문자, 숫자로만 이루어진 문자열입니다.
* password의 길이는 5 이상 15 이하입니다.
return 값 설명
생성가능한 비밀번호면 true를 그렇지 않으면 false를 return 합니다.
예시
| password | return |
|--------------|--------|
| "helloworld" | false |
| "Hello123" | true |
예시 설명
예시 #1
알파벳 대문자와 숫자를 포함하지 않았습니다.
예시 #2
알파벳 대문자 1개, 알파벳 소문자 4개, 숫자 3개를 포함했으므로 생성할 수 있습니다.
문제7
예산 내에서 의자와 책상을 하나씩 사려고 합니다. 이때, 의자와 책상 가격의 합이 가장 크게 사려고 합니다.
예를 들어, 돈을 7원을 가지고 있고 의자의 가격이 [2, 5], 책상의 가격이 [4, 3, 5]일 때, 첫번째 의자와 세번째 책상을 구매하면 가격의 합이 7원이고,
이때 의자와 책상 가격의 합이 가장 큽니다.
예산 money, 의자의 가격이 담긴 리스트 chairs, 책상의 가격이 담긴 리스트 desks가 매개변수로 주어집니다.
이때 예산으로 감당할 수 있는 의자와 책상 가격 합의 최댓값을 return 하도록 solution 함수를 작성하려 합니다.
빈칸을 채워 전체 코드를 완성해주세요.
매개변수 설명
예산 money, 의자의 가격이 담긴 리스트 chairs, 책상의 가격이 담긴 리스트 desks가 solution 함수의 매개변수로 주어집니다.
* 예산 money는 1 이상 1,000 이하인 자연수입니다.
* 의자와 책상의 가격은 1 이상 1,000 이하인 자연수입니다.
* chairs와 desks의 길이는 1 이상 100 이하입니다.
return 값 설명
의자와 책상을 하나씩 살때, 예산으로 감당할 수 있는 의자와 책상 가격 합의 최댓값을 return 합니다.
* 단, 가지고 있는 금액으로 의자와 책상을 하나씩 살 수 없는 경우에는 0을 return 합니다.
예제
| money | chairs | desks | return |
|-------|--------|-----------|--------|
| 7 | [2, 5] | [4, 3, 5] | 7 |
| 7 | [3] | [5] | 0 |
예제 설명
예제 #1
문제에 나온 예와 같습니다.
예제 #2
3원짜리 의자와 5원짜리 책상을 구매하면 8원이 듭니다. 이는 예산 7원을 초과하기때문에 0을 return 합니다.
문제8
주어진 수와 주어진 수를 뒤집은 수와의 차를 계산하려고 합니다.
예를 들어, 주어진 수가 120인 경우 이를 뒤집으면 021입니다. 십진수에서 앞의 0은 제거해야하므로 120을 뒤집은 수는 21입니다.
따라서 120과 21의 차는 99 입니다. 이를 계산하기 위해 다음과 같이 프로그램 구조를 작성했습니다.
1. 주어진 수의 자릿수를 구합니다.
2. 구한 자릿수를 이용하여 주어진 수를 거꾸로 뒤집습니다.
3. 주어진 수와 뒤집은 수의 차이를 구합니다.
수 number가 주어질 때, 주어진 수와 주어진 수를 뒤집은 수와의 차를 return 하도록 solution 함수를 작성하려 합니다.
위 구조를 참고하여 코드가 올바르게 동작할 수 있도록 빈칸에 주어진 func_a, func_b, func_c 함수와 매개변수를 알맞게 채워주세요.
매개변수 설명
수 number가 solution 함수의 매개변수로 주어집니다.
* 수 number는 1 이상 10,000 이하인 정수입니다.
return 값 설명
주어진 수 number와 number를 뒤집은 수와의 차를 return 합니다.
예제
| number | return |
|--------|--------|
| 120 | 99 |
| 23 | 9 |
예제 설명
예제 #1
문제에 나온 예와 같습니다.
예제 #2
23을 반대로 뒤집으면 32가 되고 이때 두 수의 차는 9 입니다.
문제9
다양한 색을 가진 양말 중 같은 색을 가진 양말을 2개씩 묶어 한 쌍을 만드려고 합니다.
예를 들어, 가지고 있는 양말의 색깔이 [빨강, 파랑, 빨강, 노랑, 파랑, 빨강] 이라면 아래 그림과 같이 2쌍을 만들 수 있습니다.
양말 색을 숫자로 표현해서 담은 리스트 socks가 매개변수로 주어질 때,
양말을 몇 쌍 만들 수 있는지 return 하도록 solution 함수를 작성했습니다.
그러나, 코드 일부분이 잘못되어있기 때문에, 몇몇 입력에 대해서는 올바르게 동작하지 않습니다.
주어진 코드에서 _**한 줄**_만 변경해서 모든 입력에 대해 올바르게 동작하도록 수정하세요.
매개변수 설명
양말 색을 숫자로 표현해서 담은 리스트 socks가 solution 함수의 매개변수로 주어집니다.
* 양말 색은 0 보다 크거나 같고 10 보다 작은 정수로 표현합니다.
* 양말 수는 1개 이상 100개 이하입니다.
return 값 설명
양말을 몇 쌍 만들 수 있는지 return 합니다.
예시
| socks | return |
|--------------------|--------|
| [1, 2, 1, 3, 2, 1] | 2 |
#####예시 설명
문제에 나온 예와 같습니다.
문제10
불량 사과 상자가 몇 박스인지 알아보려 합니다.
사과 한 박스의 표준 무게는 weight이며, 표준 무게와 비교해 무게가 오차 10% 이내인 사과 박스는 정상품으로,
오차가 그보다 많은 사과 박스는 불량품으로 판정합니다.
예를 들어, 표준 무게가 600이라면 무게가 540 이상 660 이하인 사과 상자만 정상품입니다.
판정해야 할 사과 상자의 무게가 각각 [653, 670, 533, 540, 660]로 주어진다면 무게가 670, 533인 상자는 불량품입니다.
따라서 주어진 상자 중 불량품은 2개입니다.
표준 무게 weight와 판정해야 할 사과 상자의 무게가 담긴 리스트 boxes가 매개변수로 주어질 때,
불량품 개수를 return 하도록 solution 함수를 작성하려 합니다. 빈칸을 채워 전체 코드를 완성해주세요.
매개변수 설명
표준 무게 weight와 판정해야 할 사과 상자의 무게가 담긴 리스트 boxes가 solution 함수의 매개변수로 주어집니다.
* 표준 무게는 500 이상 10,000 이하입니다.
* 표준 무게는 항상 10으로 나누어 떨어집니다.
* 판정해야 할 사과 상자의 개수는 1개 이상 20개 이하입니다.
* 판정해야 할 사과 상자의 무게는 400 이상 12,000 이하입니다.
return 값 설명
불량품 개수를 return 해주세요.
예시
| weight | boxes | return |
|--------|---------------------------|--------|
| 600 | [653, 670, 533, 540, 660] | 2 |
예시 설명
문제에 나온 예와 같습니다.
5주차 : COS Pro과제(2021-11-17)
문제1
문제2
문제3
문제4
문제5
문제6
문제7
문제8
문제9
문제10
5주차 : Python활용(2021-11-17)
CosPro > 파이썬 > 파이썬 활용 > Django > 사이트 관리 및 유지 보수(경력)
용어정리 밒 파이썬 문법
REST(Representational State Transfer) API란
API(Application Programming Interface)
import
튜플,리스트,딕셔너리 데이터형 이해
웹의 구조 이해(request,response)
웹의 코드 이해
pip install 패키지명
파일 입출력
활용
1) 웹 크롤링
2) GUI 프로그램
3) 웹프레임워크
파이썬을 이용한 카카오톡 활용하기편
1) 카카오 개발자 사이트 회원가입
2) 앱 등록 및 앱 키 발급
3) REST API 키 확인
예제 코드
import requests
import json
# 이미지가 있는 image_url을 통해 file_name 파일로 저장하는 함수
def save_image(image_url, file_name):
img_response = requests.get(image_url)
# 요청에 성공했다면,
if img_response.status_code == 200:
# 파일 저장
with open(file_name, "wb") as fp:
fp.write(img_response.content)
# 이미지 검색
url = "https://dapi.kakao.com/v2/search/image"
headers = {
"Authorization" : "KakaoAK 28eabd3ec4f5edb12c2ee50268272e1a"
}
data = {
"query" : "나이키축구화"
}
# 이미지 검색 요청
response = requests.post(url, headers=headers, data=data)
# 요청에 실패했다면,
if response.status_code != 200:
print("error! because ", response.json())
else: # 성공했다면,
count = 0
for image_info in response.json()['documents']:
print(f"[{count}th] image_url =", image_info['image_url'])
# 저장될 이미지 파일명 설정
count = count + 1
file_name = "test_%d.jpg" %(count)
# 이미지 저장
save_image(image_info['image_url'], file_name)
|
4) 접근권한설정하기
5) 인증코드 발급
https://kauth.kakao.com/oauth/authorize?client_id=28eabd3ec4f5edb12c2ee50268272e1a&response_type=code&redirect_uri=https://localhost.com
75LHYQxf-1Rbq5pLssMuq2jUE3qVHkdxc-PMVtUrtaB0IfaVV260eNc9qb1JDA1SKqNGdgo9dZoAAAF9KnoSIA
hCIy7UV3sCtZ0VZ-tQLkpqTr0bf2w-UAY4-ZByagwx5YQDh_jAqDhIkdpiqRa9NALFyILwo9c5oAAAF9LQNSWA
6) 사용자 토큰 발급
{
'access_token': 'Yr7juBw4nCG9k3YPYgtUjQIhFr9p9PGbWvZ86Ao9dRkAAAF9Kn5A5g',
'token_type': 'bearer',
'refresh_token': '2deqUIt7UQzCYUOKBKihS-8zU_PpFFPVQba4Zgo9dRkAAAF9Kn5A5g',
'expires_in': 21599,
'scope': 'account_email talk_message profile_nickname',
'refresh_token_expires_in': 5183999
}
7) 토큰 관리(토큰은 유효 기간이 있다)
import utils
import json
import requests
# 저장된 토큰 정보를 읽어옴
KAKAO_TOKEN_FILENAME = ".//kakao_message//kakao_token.json"
tokens = utils.load_tokens(KAKAO_TOKEN_FILENAME)
# 리스트 메시지 url
url = "https://kapi.kakao.com/v2/api/talk/memo/default/send"
# request parameter 설정
headers = {
"Authorization": "Bearer " + tokens['access_token']
}
template = {
"object_type" : "list",
"header_title" : "초밥 사진",
"header_link" : {
"web_url" : "www.naver.com",
"mobile_web_url" : "www.naver.com"
},
"contents" : [
{
"title" : "1. 광어초밥",
"description" : "광어는 맛있다",
"image_url" : "https://search1.kakaocdn.net/argon/0x200_85_hr/8x5qcdbcQwi",
"image_width" : 50, "image_height" : 50,
"link" : {
"web_url" : "www.naver.com",
"mobile_web_url" : "www.naver.com"
}
},
{
"title" : "2. 참치초밥",
"description" : "참치는 맛있다",
"image_url" : "https://search2.kakaocdn.net/argon/0x200_85_hr/IjIToH1S7J1",
"image_width" : 50, "image_height" : 50,
"link" : {
"web_url" : "www.naver.com",
"mobile_web_url" : "www.naver.com"
}
}
],
"buttons" : [
{
"title" : "웹으로 이동",
"link" : {
"web_url" : "www.naver.com",
"mobile_web_url" : "www.naver.com"
}
}
]
}
data = {
"template_object" : json.dumps(template)
}
# 나에게 카카오톡 메시지 보내기 요청(list)
response = requests.post(url, data=data, headers=headers)
print(response.status_code)
# 요청에 실패했다면,
if response.status_code != 200:
print("error! because ", response.json())
else: # 성공했다면,
print('메시지를 성공적으로 보냈습니다.')
|
참고자료
https://developers.kakao.com/docs/latest/ko/daum-search/dev-guide#search-image
https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api#request-code
https://developers.kakao.com/docs/latest/ko/kakaologin/rest-api#request-token
6주차 : COS Pro 파이썬 초보 탈출 코딩 면허 시험
문제1난이도(하)
다음과 같은 문자열이 있다.
a:b:c:d
문자열의 split와 join함수를 사용하여 위 문자열을 다음과 같이 고치시오.
a#b#c#d
문제2난이도(상)
첫 번째 항의 값이 0이고 두번째 항의 값이 1일때, 이후에 이어지는 항은 이전의 두 항을 더한 값으로 이루어지는 수열을 피보나치 수열이라고 한다.
0,1,1,2,3,5,8,13....
입력을 정수 n으로 받았을때, n이하까지의 피보나치 수열을 출력하는 함수를 작성해 보자.
문제3난이도(중)
문자열을 입력받아 같은 문자가 연속적으로 반복되는 경우에 그 반복 횟수를 표시해 문자열을 압축하여 표시하시오.
입력예시 : aaabbcccccca
출력예시 : a3b2c6a1
문제4
lambda는 함수를 생성할때 사용하는 예약어로 def와 동일한 역할을 한다.
보통 함수를 한 줄로 간결하게 만들 때 사용한다.
우리말로는 람다라고 읽고 def를 사용해야 할 정도로 복잡하지 않거나 def를 사용할 수 없는 곳에 주로 쓰인다.
lambda 매개변수1, 매개변수2 ,,,,,: 매개변수를 사용한 표현식
def add(a,b):
return a+b
를 람다식으로 표현해라
문제5
게시판 페이징 만들기
게시물의 총 건수(m) |
페이지당 보여 줄 게시물 수(n) |
총 페이지 수 |
5 |
10 |
1 |
15 |
10 |
2 |
30 |
10 |
3 |
30 |
10 |
3 |
문제6
순서도를 보고 프로그램을 만드시오
문제7
순서도를 보고 프로그램을 만드시오
문제8
순서도를 보고 프로그램을 만드시오
문제9
순서도를 보고 프로그램을 만드시오
문제10
모스부호 해독기를 만드시오
SOS |
python |
... --- ... |
.--. -.-- - .... --- -. |
문자 |
부호 |
문자 |
부호 |
A |
.- |
N |
-. |
B |
-... |
O |
--- |
C |
-.-. |
P |
.--. |
D |
-.. |
Q |
--.- |
E |
. |
R |
.-. |
F |
..-. |
S |
... |
G |
--. |
T |
- |
H |
.... |
U |
..- |
I |
.. |
V |
...- |
J |
.--- |
W |
.-- |
K |
-.- |
X |
-..- |
L |
.-.. |
Y |
-.-- |
M |
-- |
Z |
--.. |
|
|
|
|
참고자료
1. https://docs.python.org/ko/3/library/functions.html?highlight=built%20function
2. https://docs.python.org/3/library/index.html
3. https://morsedecoder.com/ko/
7주차 : COS Pro 코딩 테스트
문제1
도착지까지 충전 횟수를 구하는 함수 작성하기
전기 자동차를 이용하여 A 도시까지 이동하려고 한다.
출발하는 도시를 포함하여 N개의 도시를 지나가야 합니다.
지나가는 도시들을 순서대로 일직선으로 나타내어 각 도시에서 바로 다음 도시까지의 거리를 적어두었습니다.
거리 단위는 km를 사용하며 이용할 자동차는 완충 시 최대 40km까지 이동할 수 있습니다.
예를 들어 4개의 도시가 있다면
출발하는 도시 B에서 다음 도시 C까지의 거리는 20km이고 C도시에서 D도시까지는 10km입니다.
마지막 E도시에서 30km를 더 가면 목표 도시인 A 도시에 도착합니다.
완충된 상태로 출발 이후 도착할 때까지 몇번을 충전해야 하는지를 구하려고 합니다.
도시 간의 거리를 담은 리스트 arr이 매개변수로 전달될때 충전 횟수를 return하도록 solution함수를 완성해 주세요.
def solution():
pass
def main():
print("Q1")
solution()
if __name__ == "__main__":
main()
문제2
KTX 열차 승차 인원 구하는 함수 빈칸 채우기
KTX 열차는 한 번에 6개의 차량을 연결하여 운행하며 각 차량은 40개의 좌석이 있습니다.
만약 좌석이 부족한 경우에는 입석으로 서서 가야 합니다.
출발역에서 도착지까지의 여러 개의 역을 지나는 동안 각 역마다 내리는 사람도 있고 타는 사람도 있습니다.
안전상 서서 가는 사람들을 최소화시키기 위해 승차 인원에 대한 조사를 실시하여 입석이 사람이 가장 많을때가 몇 명인지를 파악하려고 합니다.
예를 들어 4개 역을 지나는 경우
|
출발역[0] |
[1] |
[2] |
[3] |
[도착역] |
승차 |
240 |
100 |
0 |
160 |
|
하차 |
0 |
0 |
140 |
80 |
280 |
입석 |
0 |
100 |
0 |
40 |
|
출발역을 포함하여 각 역마다 하차하는 인원수를 담은 리스트 down과 승차하는 인원수를 담은 리스트 up이 매개변수로 전달될때 가장 많은 입석 인원수를
return하도록 solution 함수를 작성하라.
제한조건
승차인원은 좌석 수를 초과할 수 있습니다.
리스트 down과 up의 길이는 같으며 지나가는 역의 순서대로 저장됩니다.
도착역에서는 모두 내려야 하므로 전달되는 리스트에는 포함되지 않습니다.
def solution():
pass
def main():
print("Q2")
solution()
if __name__ == "__main__":
main()
문제3
ISBN규칙을 확인하는 함수 작성하기
국제 표준 도서 번호인 ISBN은 국제적으로 책에 붙이는 고유한 식별자입니다.
ISBN은 13자리로 이루어져 있으며, 첫 3자리는 978 또는 979로 정해져 있습니다.
마지막 1자리의 숫자는 "확인 숫자"로 ISBN 규칙에 맞는지 검사하기 위해 사용됩니다.
검사하는 방법은 다음과 같습니다.
1) 확인 숫자를 제외한 나머지 각 자리마다 가중치를 곱한 값을 더한 총합을 구한다.
가중치는 첫 자리를 1, 다음 자리를 3으로 하여 반복한다(1,3,1,3,1,3,,,,)
2) 10에서 총합을 10으로 나눈 나머지를 뺀 값이 10일때는 0으로 한다.
3) 확인숫자와 비교하여 같으면 ISBN코드이다.
ISBN : 9788960777330
def solution():
pass
def main():
print("Q3")
solution()
if __name__ == "__main__":
main()
문제4
축구장 임대료를 구하는 함수 빈칸 채우기
우리 지역에서 개최하는 사회인 축구대회에 총 7팀이 참가 신청을 하였습니다.
각 팀이 다른 모든팀과 한 번씩 경기를 진행하려고 합니다.
각 팀은 하루에 한 경기만 참여 할 수 있으며 쉬는 날도 있습니다.
대회에 사용할 축구장을 임대해야 하기 때문에 임대료를 계산하여 예산 신청을 해야 합니다.
대회에 참가하는 팀 수 n과 축구장의 하루 임대료 price가 매개변수로 주어질 때 전체 대회 기간에 대한 임대료를 계산하여 return하도록 solutionㅜn함수를 작성하시오.
def solution():
pass
def main():
print("Q4")
solution()
if __name__ == "__main__":
main()
문제5
사용자가 파일을 업로드할 수 있는 서비스를 만들려고 합니다.
다만 서비스의 보안 및 안정성을 위해 일부 파일만을 업로드 할 수 있습니다.
파일의 정보는 문자열로 읽을 수 있으며 3개 항목을 쉼표로 구분하여 다음과 같이 표준화되어 있습니다.
"파일형식,파일명,파일크기"
파일형식이 "jpeg"이고, 파일크기가 1,000보다 작은 파일만 업로드 할 수 있습니다.
예를 들어 파일의 정보가 아래와 같은 경우의 결과는 다음과 같습니다.
파일정보 |
결과 |
"jpeg,all.jpg,500" |
업로드 가능 |
"mpeg,all.mp3,500" |
업로드 불가 - 파일형식 불가 |
사용자가 업로드하려는 파일들의 정보를 담은 리스트 file_info가 매개변수로 전달될때 업로드 할 수 있는 파일의 개수와 업로드 할 수 없는 파일의 개수를 수너대로 return 하도록 solution 함수를 작성하시오.
def solution():
pass
def main():
print("Q5")
solution()
if __name__ == "__main__":
main()
코딩 테스트1
당신은 음식점의 계산을 도와주는 점원이다.
카운터에는 거스름돈으로 사용할 500원, 100원, 50원,10원짜리 동전이 무한히 존재한다.
손님에게 거슬러 줘야 할 돈이 N원일때 거슬러줘야 할 동전의 최소 개수를 구하라. (단 거슬러 줘야 할 돈 N은 항상 10의 배수이다)
삼성전자 기출문제2
난이도 중
풀이시간 50분
시간 제한 2초
메모리 제한 512MB
기출 삼성전자 공채
링크
https://www.acmicpc.net/problem/16236
N * N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있습니다. 공간은 1 * 1 크기의 정사각형으로 나누어져 있습니다.
한 칸에는 물고기가 최대 1마리 존재합니다. 아기 상어와 물고기는 모두 크기를 가지고 있고, 이 크기는 자연수입니다.
가장 처음에 아기 상어의 크기는 2이고, 아기 상어는 1초에 상하좌우로 인접한 한 칸씩 이동합니다.
기술면접 유형
개발하면서 가장 행복했던 일은 무엇인가요?
자신이 가장 열정적으로 참여했던 프로젝트가 있다면 이야기해주세요
회사에 대해 궁금한 점이 있으면 말씀해 주세요.
알고리즘 문제 풀이 사이트
코드 시그널
코드포스
정올
8주차 : COS Pro
문제1
통학버스 왕복 횟수 구하는 함수 작성하기
새로 조성된 신도시는 큰 도로 하나를 따라 여러 아파트 단지들을 지었습니다.
한 지점에 학교 하나를 신설했습니다.
학교는 통학버스로 이 도로를 따라 왕복하여 학생들을 학교로 태워 데리고 오며 통학버스는 한 대이며 정원은 12명입니다.
이 통학버스는 정원을 초과하여 학생을 태울 수 없고, 모든 학생을 등교시킬 때까지 운행합니다.
모든 학생을 등교시키기 위해 통학버스는 몇 번을 왕복해야 하는지 확인하려고 합니다.
각 아파트 단지에 이 학교 학생들의 수를 리스트 student에 담아 아파트 단지 수 apts와 함께 매개변수로 전달될 때 통학버스의
황복 횟수를 return하도록 solution 함수를 완성해 주세요.
제한 사항
통학버스를 타지 않는 학생은 없다.
학생 수는 0이상의 정수이다.
def solution():
pass
def main():
print("Q1")
solution()
if __name__ == "__main__":
main()
문제2
수업별 신청자 인원수 구하는 함수 수정하기
A대학교에서 심리학,양상이해,이산수학 수업 신청자수를 조사하였다.
각 학년별로 나누어 조사한 결과를 한 줄로 입력하였다고 한다.
각 수업별로 신청자의 총합을 확인하는 것이 급하게 해야 할 일입니다.
담당자는 신청자 수만 나열하여 작성하였는데 순서는 다음과 같습니다.
1) 심리학 영상이해 이산수학의 순으로
2) 1학년,2학년,3학년,4학년순으로 신청자 수만 나열
예를 들어 []인 경우에 첫 4개는 심리학 신청자 수이며 다음 4개는 영상이해 신청자 다음 4개는 이산수학의 신청자 수가 됩니다.
전체 신청자 인원수를 저장한 리스트 arr이 매개변수로 전달될때 심리학,영상이해 이산수학의 순서로 수업별 신청자 총합을 저장한 리스트를 return하도록
solution 함수를 작성했습니다.
그러나 코드 일부분이 잘못되어 있어서 올바르게 동작하지 않습니다.
주어진 코드에서 한줄만 변경하여 올바르게 동작하도록 수정해주세요.
def solution():
pass
def main():
print("Q2")
solution()
if __name__ == "__main__":
문제3
단체 여행 숙소 방의 개수를 구하는 함수 수정하기
우석대학교 정보보안학과에서는 단체로 2박 3일 MT를 가자고 했습니다.
1학년부터 6학년까지 학생들이 묵을 방을 배정해야 합니다.
같은 학년끼리만 방을 배정해야 하며 방 하나에 한 명만 배정하는 것도 가능합니다.
방 하나에 배정할 수 있는 최대 인원수 K일 때, 모든 학생을 배정하기 위해 필요한 방의 최소 개수를 구하려고 합니다.
예를 들어, 여행을 가는 학생 수가 다음 표와 같고 k=4일때 17개의 방이 필요합니다.
학년 |
인원 |
방 개수 |
1 |
13 |
4 |
2 |
16 |
4 |
3 |
9 |
3 |
4 |
2 |
1 |
5 |
10 |
3 |
6 |
7 |
2 |
학년별 인원수가 1학년부터 순서대로 저장된 리스트 arr,방 하나의 최대인원수 k를 매개변수가 전달될때 필요한 방의 개수를 return 하는 solution함수를 작성했습니다.
그러나 코드 일부분이 잘못되어 있어서 올바르게 동작하지 않습니다.
주어진 코드에서 한줄만 변경하여 올바르게 동작하도록 수정해 주세요
def solution():
pass
def main():
print("Q3")
solution()
if __name__ == "__main__":
문제4
주차장 요금 정산하는 함수 빈칸 채우기
우석대주차장은 도심의 유료 주차장입니다.
기본요금 1000원에 10분당 500원씩 추가 요금을 받고 있습니다.
주차된 차들이 들어온 시간을 4자리의 정수로 적어두고 나갈 때 요금을 정산합니다.
시간은 24시간제로 표시하여 2자는 시간, 2자리는 분으로 표시하고 있습니다.
예를 들어 어떤 차의 시간이 1,400인 경우 14:00으로 오후 2시 00분에 들어온 것이고 530인 경우는 05:30으로
오전 5시 30분에 들어온 것입니다.
모든 차량은 밤 10시에는 모두 요금 정산 후 나가야 하고 직원 교대 및 식사 후에 밤 12시(0시)부터 다시 영업을 시작합니다.
오늘도 마찬가지로 밤 10시가 되어 요금 정산을 하려고 합니다.
주차장에 남아 있는 차들이 들어온 시간을 담은 리스트 arr이 매개변수로 전달될때 받아야 할 총 요금을 return하도록 solution함수를 작성하려고 합니다.
빈칸을 채워 전체코드를 완성해 주세요.
def solution():
pass
def main():
print("Q4")
solution()
if __name__ == "__main__":
문제5
빌라의 세대별 전기요금 구하는 함수 빈칸 채우기
삼례동의 W 빌라에는 8세대가 살고 있다.
매달 사용하는 전기요금은 하나로 합산하여 청구되고 청구서에는 빌라 전체 총사용량과 각 세대별 사용량이 표시되어 있습니다.
청구서에 적힌 사용량은 아래의 순서로 작성되어 있습니다.
총사용량 |
1호 |
2호 |
3호 |
4호 |
5호 |
6호 |
7호 |
8호 |
1,124 |
224 |
213 |
104 |
124 |
221 |
79 |
94 |
65 |
각 세대별로 전기요금을 걷기 위해 합산 요금을 총사용량으로 나눈 단위 요금을 구한 후 세대별 사용량에 따른 전기요금을 구하려고 합니다.
이때 단위 요금의 소수점 이하는 무조건 올림하여 1로 하고 남는 요금은 공용 회비로 사용하기로 하였습니다.
예를 들어 단위 요금이 209.866인 경우 210으로 계산합니다.
S 빌라의 전기 사용량을 위의 순서대로 담은 리스트 wats,합산 전기 요금 bill이 매개변수로 전달 될때
각 세대별 전기요금을 담은 리스트를 return하도록
solution 함수를 작성했습니다. 빈칸을 채워 올바르게 동작하도록 완성해 주세요
def solution():
pass
def main():
print("Q5")
solution()
if __name__ == "__main__":
참고 교재 및 사이트
1.
메인교재) 이것이 코딩 테스트다 (한빛미디어)
2. COS Pro 2급 파이썬
3. 전문코딩능력평가 COS PRO2급 Python
4. http://izerone.co.kr:81
5. https://programmers.co.kr/learn/courses/33
6. https://book.naver.com/bookdb/book_detail.nhn?bid=13329372
2021년 학년도 창의적 프로그래밍 능력 향상을 위한 Django 기반 파이썬 웹 개발 프로그래밍
1주차 |
2주차 |
3주차 |
4주차 |
5주차 |
6주차 |
7주차 |
8주차
참고 교재
1. 메인교재) 파이썬 웹 개발부터 배포까지 점프 투 장고 (이지스퍼블리싱)
2. Django로 배우는 쉽고 빠른 웹 개발 파이썬 웹 프로그래밍(한빛미디어)
자주쓰는 명령어
python manage.py runserver --settings=config.settings.local
python manage.py makemigrations --settings=config.settings.local
python manage.py migrate --settings=config.settings.local
서버 종류 : Ubuntu20.04
교육내용
1주차 : Django 사용을 위한 Ubunutu20.04 기반에 서버 구축
date
sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
date
python
python3
sudo apt update
sudo apt install python3-venv
mkdir projects
mkdir venvs
cd venvs
python3 -m venv mysite
cd mysite
cd bin
. activate
pip install wheel
pip install django==3.2
pip install markdown
cd ~/projects
cd mysite
python manage.py runserver
ctrl+c
python manage.py runserver 0:8000
python manage.py runserver
[수정전]
git clone https://github.com/jema10/Python_Django.git mysite
python manage.py migrate
--settings=mysite.settings.prod
python manage.py migrate --settings=mysite.settings.prod
[Nginx설치]
위치> (mysite)master@:~/projects/mysite$
sudo apt install nginx
cd /etc/nginx/sites-available
sudo nano mysite
server {
listen 80;
server_name;
location = {}
location /static {}
location / {}
}
server {
listen 80;
server_name 192.168.XXX.XXX;
location = /favicon.ico { access_log off; log_not_found off;}
location /static {alias /home/master/projects/mysite/static;}
location / {
include proxy_params;
proxy_pass http://unix:/tmp/gunicorn.sock;
}
}
cd /etc/nginx/sites-enabled
ls
sudo rm default
sudo ln -s /etc/nginx/sites-available/mysite
sudo systemctl restart nginx
sudo nginx -t
sudo systemctl stop nginx
sudo systemctl start nginx
sudo systemctl status nginx
[Gunicorn설치]
위치> (mysite)master@:~/projects/mysite$
pip install gunicorn
cd ~/projects/mysite
gunicorn --bind 0:8000 mysite.wsgi:application
gunicorn --bind unix:/tmp/gunicorn.sock
config.wsgi:application
위치> /home/master/venvs
nano mysite.env
DJANGO_SETTINGS_MODULE=config.settings.prod
위치> /etc/systemd/system
sudo nano mysite.service
[Unit]
[Service]
[Install]
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=master
Group=master
WorkingDirectory=/home/master/projects/mysite
EnvironmentFile=/home/master/venvs/mysite.env
ExecStart=/home/master/venvs/mysite/bin/gunicorn \
--workers 2 \
--bind unix:/tmp/gunicorn.sock \
config.wsgi:application
[Install]
WantedBy=multi-user.target
sudo systemctl start mysite.service
sudo systemctl status mysite.service
sudo systemctl enable mysite.service
sudo systemctl stop mysite.service
sudo systemctl restart mysite.service
2주차:[개발PC 환경 구축]
1. 파이참설치
2. 개발을 위한 초기 클라이언트 작업
pip install django==3.1.3
pip install --upgrade pip
mkdir mysite
cd mysite
django-admin startproject config .
위치> d:/projects/mysite/config
mkdir settings
move settings.py settings/base.py
파이참을 이용해 수정
BASE_DIR=Path(__file__).resolve().parent.parent.parent
위치> d:/projects/mysite/config/settings/
local.py
from .base import *
ALLOWED_HOSTS = []
위치> d:/projects/mysite/config/settings/
prod는 production의 약어이다.
prod.py
from .base import *
ALLOWED_HOSTS = ['192.168.XXX.XXX']
STATIC_ROOT = BASE_DIR / 'static/'
STATICFILES_DIRS = []
3. 설문조사 앱을 만들면서 장고에 익숙해지기
python manage.py startapp polls
위치> polls/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
위치> polls/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
위치> mysite/urls.py
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
확인
http://localhost:8000/polls
위치 > polls/models.py
import datetime
from django.utils import timezone
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
위치 > mysite/settings.py
'polls.apps.PollsConfig',
python manage.py makemigrations polls --settings=config.settings.local
python manage.py sqlmigrate polls 0001 --settings=config.settings.local
python manage.py migrate --settings=config.settings.local
python manage.py shell --settings=config.settings.local
위치 > polls/model.py
from django.db import models
class Question(models.Model):
# ...
def __str__(self):
return self.question_text
class Choice(models.Model):
# ...
def __str__(self):
return self.choice_text
위치 > polls/admin.py
from django.contrib import admin
from .models import Question
admin.site.register(Question)
4. 관리자 생성하기
python manage.py createsuperuser
5. 뷰 추가히기(FBV)
위치 > polls/views.py
from django.http import HttpResponse
from django.template import loader
from .models import Question
def index(request):
latest_question_list = Question.objects.order_by('-pub_date')[:5]
template = loader.get_template('polls/index.html')
context = {
'latest_question_list': latest_question_list,
}
return HttpResponse(template.render(context, request))
def detail(request, question_id):
return HttpResponse("You're looking at question %s." % question_id)
def results(request, question_id):
response = "You're looking at the results of question %s."
return HttpResponse(response % question_id)
def vote(request, question_id):
return HttpResponse("You're voting on question %s." % question_id)
위치 > polls/urls.py
from django.urls import path
from . import views
urlpatterns = [
# ex: /polls/
path('', views.index, name='index'),
# ex: /polls/5/
path('/', views.detail, name='detail'),
# ex: /polls/5/results/
path('/results/', views.results, name='results'),
# ex: /polls/5/vote/
path('/vote/', views.vote, name='vote'),
]
6. 화면 출력하기
from django.http import HttpResponse
from .models import Question
[Step1]
def index(request):
latest_question_list = Question.objects.order_by('-pub_date')[:5]
output = ', '.join([q.question_text for q in latest_question_list])
return HttpResponse(output)
[Step2]
def index(request):
latest_question_list = Question.objects.order_by('-pub_date')[:5]
template = loader.get_template('polls/index.html')
context = {
'latest_question_list': latest_question_list,
}
return HttpResponse(template.render(context, request))
# Leave the rest of the views (detail, results, vote) unchanged
위치 > polls/templates/polls/index.html
{% if latest_question_list %}
{% else %}
No polls are available.
{% endif %}
7. view의 변화
[Step1]
from django.http import HttpResponse
from django.template import loader
from .models import Question
return HttpResponse(template.render(context, request))
[Step2]
from django.shortcuts import render
from .models import Question
return render(request, 'polls/index.html', context)
[Step3]
from django.http import Http404
from django.shortcuts import render
from .models import Question
위치> E:\IP_095\mysite
mkdir static
-> bootstrap.min.css
-> bootstrap.min.js
-> jquery-3.4.1.min.js
-> style.css
mkdir templates
-> base.html
-> home.html
-> navbar.html
python manage.py runserver
python manage.py runserver --settings=config.settings.local
python manage.py runserver --settings=config.settings.prod
위치>d:\projects\mysite\config\settings\base.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR / 'templates'],
STATICFILES_DIRS = [
BASE_DIR / 'static',
]
Tip>
killall python
cd \
c:\> mkdir venvs
c:\> cd venvs
python -m venv mysite
c:\venvs> cd c:\venvs\mysite\Scripts
c:\venvs\mysite\Scripts> activate
(mysite)c:\venvs\mysite\Scripts>
(mysite)c:\venvs\mysite\Scripts>pip install django==3.1.3
(mysite)c:\venvs\mysite\Scripts>pip install --upgrade pip
mysite.cmd
@echo off
cd d:\projects\mystie
c:/venvs/mystie/scripts/activate
d:\
d:\>mkdir projects
d:\>cd projects
(mystie) d:\projects>mkdir mysite
(mystie) d:\projects>cd mysite
(mystie) d:\projects\mysite>django-admin startproject config .
python manage.py runserver
python manage.py runserver --settings=config.settings.local
python manage.py runserver --settings=config.settings.prod
(mysite) d:/projects/mysite> mkdir static
(mysite) d:/projects/mysite> mkdir templates
css와 bootstrap 파일을 static안에 복사
3. 장고기본 작업(반드시 숙지해야함)
django-admin startapp iot
1) Step1
config > urls.py
from iot import views
path('',views.index)
2) Step2
config>urls.py
from django.urls import path, include
from iot import views
path('iot/',include('iot.urls'))
3) Step3
config>urls.py
from . import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.HomeView.as_view(), name='home'),
path('iot/',include('iot.urls')),
]
4) Step4(P87)
iot/urls.py
from django.urls import path
from . import views
app_name = 'iot'
urlpatterns = [
# base_views.py
path('', views.index,name='index'),
path('', views.detail, name='detail'),
]
위치> D:/projects/mysite/iot/views.py
Step1
from django.shortcuts import render
from .models import IoT
def index(request):
pass
def detail(request):
pass
Step2
from django.http import HttpResponse
return HttpResponse('안녕하세요 iot 서비스 입니다.')
4. 대문작업하기
위치> d:/projects/mysite/config/urls.py
from . import views
path('',views.HomeView.as_view(),name='home'),
from django.views.generic.base import TemplateView
class HomeView(TemplateView):
pass
class HomeView(TemplateView):
template_name = 'home.html'
5. 모데링연습
위치> D:/projects/mysite/pybo/models.py
class Iot_Manager(models.Model):
position = models.CharField(max_length=200)
content = models.TextField()
create_date = models.DateTimeField()
def __str__(self):
return self.position
class Iot(models.Model):
iot_manager = models.ForeignKey(Iot_Manager,on_delete=models.CASCADE)
part = models.CharField(max_length=200)
data = models.IntegerField()
create_date = models.DateTimeField()
app추가
위치> D:/projects/mysite/config/settings/base.py
'iot.apps.IotConfig', 추가
http://sqlitebrowser.org
python manage.py makemigrations --settings=config.settings.local
python manage.py migrate --settings=config.settings.local
db삭제후 다시 적용해도 됨
python manage.py createsuperuser --settings=config.settings.local
iot_iot
iot_iot_manager
6. sql연습
python manage.py sqlmigrate iot 0001 --settings=config.settings.local
python manage.py shell --settings=config.settings.local
from iot.models import Iot_Manager, Iot
from django.utils import timezone
q = Iot_Manager(position='정공관',content='정문',create_date=timezone.now())
q.save()
Iot_Manager.objects.all()
7. DB작업
from iot.models import Iot
from django.utils import timezone
for i in range(1000):
q = Iot(part='초음파센서:[%03d]' %i,
data='100',create_date=timezone.now(),iot_manager_id
=1)
q.save()
8. admin.py 수정
from .models import Iot_Manager
from .models import Iot
admin.site.register(Iot_Manager)
admin.site.register(Iot)
3주차:
위치 > E:\projects\mysite\templates
home.html
base.html
navbar.html
form.errors.html
[d] iot
[d] common
1. 대문 만들기
클래스형 View로 메인 페이지 꾸미기
path('',views.Iot_ManagerList.as_view(),name='index'),
from django.views.generic import ListView
from iot.models import Iot_Manager
class Iot_ManagerList(ListView):
model = Iot_Manager
2. iot 앱 기능 추가 하기
위치 > iot\views.py
def list(request,iot_manager_id):
pass
(상)4주차 : 가장 중요한 부분
1. 답변 등록 기능 만들기
위치> d:/projects/mysite/templates/pybo/question_detail.html
2. 질문 등록 기능 만들기
3. 장고 폼에 대한 이해
4. 수작업으로 폼 작성하기
5주차 : 페이징 기능 추가하기
진행한 강의
polls 완벽 세팅가이드
pip install django==3.2
django-admin startproject mysite
python manage.py startapp polls
mysite > urls.py
from django.contrib import admin
from django.urls import
include, path
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
mysite > settings.py
INSTALLED_APPS = [
'
polls.apps.PollsConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
polls > urls.py
from django.urls import path
from . import views
urlpatterns = [
# ex: /polls/
path('', views.index, name='index'),
# ex: /polls/5/
path('
/', views.detail,
name='detail'),
# ex: /polls/5/results/
path('/results/',
views.results, name='results'),
# ex: /polls/5/vote/
path('/vote/', views.vote,
name='vote'),
]
polls > views.py
from django.shortcuts import render
from .models import Question
def index(request):
latest_question_list = Question.objects.order_by('-pub_date')[:5]
context = {'latest_question_list': latest_question_list}
return render(request, 'polls/index.html', context)
polls > templates > polls > index.html
장고의 템플릿의 이해
{% if latest_question_list %}
{% else %}
No polls are available.
{% endif %}
polls > models
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __str__():
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
def __str__():
python manage.py makemigrations polls
python manage.py migrate
polls > admin.py
from django.contrib import admin
from .models import Question,Choice
admin.site.register(Question)
admin.site.register(Choice)
데이터베이스실습
계획한 강의
위치> d:/projects/mysite/pybo/views.py
from django.core.paginator import Paginator
템플릿 필터 직접 만들기
게시물 번호 공식 만들기
6주차 : 로그인 로그아웃 구현하기
진행할 강의
데이터베이스 실습
대문작업
python manage.py startapp intro
mysite > settings.py
mysite > urls.py
path('',include('intro.urls'))
intro > urls.py
path('about_me/',views.about_me),
path('',views.landing),
mysite > templates
bast.html
비교과 Django {%block title%}{%endblock%}
{% block content %}
{% endblock %}
메인화면꾸미기(부트스트랩)
https://getbootstrap.com
STATICFILES_DIRS=[os.path.join(BASE_DIR,'static')]
출력화면변경, 내용 입력
자기소개서 만들기
불러와야 할 모듈
get_object_or_404
redirect
reverse
timezone
로그인(로그아웃)구현
django-admin startapp common
mysite > settings.py
mysite > urls.py
path('common/',include('common.urls'))
common > urls.py
app_name = 'common'
urlpatterns = [
]
admin 암호 변경
python3 manage.py changepassword admin
계획한 강의
위치> d:/projects/mysite/config/setting.py
django-admin startapp common
'common.apps.CommonConfig',
path('common/',include('common.urls')),
common/urls.py
app_name ='common'
urlpatterns = []
위치> d:/projects/mysite/templates/navbar.html
{% url 'common:login' %}
위치> d:/projects/mysite/common/urls.py
from django.urls import path
from django.contrib.auto import views as auth_views
7주차 :
페이징 기능 추가
삭제 기능 추가
수정 기능 추가
등록 기능 추가
8주차 미니프로젝트 :
sudo systemctl restart mysite.service
sudo systemctl restart nginx
python manage.py collectstatic
You're using the staticfiles app without having set the STATIC_ROOT setting to a
filesystem path
mystie > settings.py
STATICFILES_DIRS = []
STATIC_ROOT = BASE_DIR / 'static/'
워니쌤의 짧은 강의
프로젝트 발표(팀별 선발)
결과물 :
템플릿시스템
템플릿변수
깃버전관리
1. Client 작업
git init
git status
.gitignore 만들기
git add
git status
git commit -m "1차 개발 마무리"
git diff
git restore
git log
git remote add origin https://github.com/jema10/Python_Django.git
git push -u origin master
git remote add origin https://github.com/jema10/test.git
git branch -M main
git push -u origin main
2. 서버 작업
git clone https://github.com/jema10/Python_Django.git mysite
3. 최종정리
1) 프로그램 변경 작업
2) git add 파일명 or git add *
3) git commit -m "변경사항요약"
4) git push 명령 수행하기
sql문 정리
from pybo.models import Question, Answer
from django.utils import timzone
q.id
Question.objects.all()
Question.objects.filter(id=1)
Question.objects.filter(subject__contents='장고')
Question.objects.get(id=1)
q=Question.objects.get(id=1)
q.subject = 'This is a test'
q.save()
q=Question.objects.get(id=1)
q.delete()
Question.objects.all()
q.answer_set.all()
Question.objects.all().delete()
update : 2021-06-25
미션 성공률 :
최종 마무리 : 내가 만들앱을 완성하기(무기한)
참고사이트
1. https://docs.djangoproject.com/ko/3.2/intro/
2. https://docs.djangoproject.com/ko/3.2/intro/tutorial01/
3. https://docs.djangoproject.com/ko/3.2/intro/tutorial02/
4. https://docs.djangoproject.com/ko/3.2/intro/tutorial03/
5. https://docs.djangoproject.com/ko/3.2/intro/tutorial04/
6. https://docs.djangoproject.com/ko/3.2/intro/tutorial05/
7. https://docs.djangoproject.com/ko/3.2/intro/tutorial06/
8. https://docs.djangoproject.com/ko/3.2/intro/tutorial07/
9. https://docs.djangoproject.com/ko/3.2/intro/tutorial08/
10. https://docs.djangoproject.com/ko/3.2/intro/tutorial09/
11. https://docs.djangoproject.com/ko/3.2/intro/tutorial10/
12. https://getbootstrap.com/docs/5.0/getting-started/download/
13. https://github.com/pahkey/djangobook
14. https://wikidocs.net/79091
15. https://dev.plusblog.co.kr/33