[코딩 기초 트레이닝]Day21 함수(메서드)
뒤에서 5등 위로
문제 설명
정수로 이루어진 리스트 num_list
가 주어집니다. num_list
에서 가장 작은 5개의 수를 제외한 수들을 오름차순으로 담은 리스트를 return하도록 solution 함수를 완성해주세요.
제한사항
- 6 ≤
num_list
의 길이 ≤ 30 - 1 ≤
num_list
의 원소 ≤ 100
입출력 예
num_list | result |
---|---|
[12, 4, 15, 46, 38, 1, 14, 56, 32, 10] | [15, 32, 38, 46, 56] |
solution
def solution(num_list):
return sorted(num_list)[5:]
전국 대회 선발 고사
문제 설명
0번부터 n - 1번까지 n명의 학생 중 3명을 선발하는 전국 대회 선발 고사를 보았습니다. 등수가 높은 3명을 선발해야 하지만, 개인 사정으로 전국 대회에 참여하지 못하는 학생들이 있어 참여가 가능한 학생 중 등수가 높은 3명을 선발하기로 했습니다.
각 학생들의 선발 고사 등수를 담은 정수 배열 rank
와 전국 대회 참여 가능 여부가 담긴 boolean 배열 attendance
가 매개변수로 주어집니다. 전국 대회에 선발된 학생 번호들을 등수가 높은 순서대로 각각 a, b, c번이라고 할 때 10000 × a + 100 × b + c를 return 하는 solution 함수를 작성해 주세요.
제한사항
- 3 ≤
rank
의 길이 =attendance
의 길이 ≤ 100 rank[i]
는i
번 학생의 선발 고사 등수를 의미합니다.rank
의 원소는 1부터 n까지의 정수로 모두 서로 다릅니다.attendance[i]
는i
번 학생의 전국 대회 참석 가능 여부를 나타냅니다.attendance[i]
가 true라면 참석 가능, false면 참석 불가능을 의미합니다.
attendance
의 원소 중 적어도 3개는 true입니다.
입출력 예
rank | attendance | result |
---|---|---|
[3, 7, 2, 5, 4, 6, 1] | [false, true, true, true, true, false, false] | 20403 |
[1, 2, 3] | [true, true, true] | 102 |
[6, 1, 5, 2, 3, 4] | [true, false, true, false, false, true] | 50200 |
solution
def solution(rank, attendance):
new = []
for i, v in enumerate(attendance):
if v:
new.append(rank[i])
new2 = sorted(new)
return rank.index(new2[0]) * 10000 + 100 * rank.index(new2[1]) + rank.index(new2[2])
-------------------------------------------------
def solution(rank, attendance):
selected = []
for i, attend in enumerate(attendance):
if attend:
selected.append((rank[i], i))
selected.sort()
a, b, c = selected[:3]
return 10000 * a[1] + 100 * b[1] + c[1]
-----------------------------------------------
def solution(rank, attendance):
arr = sorted([(x, i) for i, x in enumerate(rank) if attendance[i]])
return arr[0][1] * 10000 + arr[1][1] * 100 + arr[2][1]
정수 부분
문제 설명
실수 flo
가 매개 변수로 주어질 때, flo
의 정수 부분을 return하도록 solution 함수를 완성해주세요.
제한사항
- 0 ≤
flo
≤ 100
입출력 예
flo | result |
---|---|
1.42 | 1 |
69.32 | 69 |
solution
def solution(flo):
return int(flo)
문자열 정수의 합
문제 설명
한 자리 정수로 이루어진 문자열 num_str
이 주어질 때, 각 자리수의 합을 return하도록 solution 함수를 완성해주세요.
제한사항
- 3 ≤
num_str
≤ 100
입출력 예
num_str | result |
---|---|
“123456789” | 45 |
“1000000” | 1 |
solution
def solution(num_str):
return sum(map(int, num_str))
------------------------------------------
def solution(num_str):
sum = 0
for i in num_str:
sum = sum + int(i)
return sum
sum()은 숫자형 자료형에 사용가능합니다. 그래서 따로 리스트나 배열로 묶어주지 않아도 map으로 int형으로 나타냈기 때문에 sum을 사용할 수 있습니다.
map()
각 요소들에 대해 특정 함수를 적용 시키고 싶을 때 사용합니다.
동작 원리는 두번째 인자로 들어온 자료형을 첫번째 인자의 함수에 하나씩 넣어서 실행시키는 구조입니다.
map을 사용하지 않을 때는 실수가 저장된 리스트가 있을 때, 이 리스트의 모든 요소를 정수로 변환하려면 원래는 for 반복문을 사용해서 반환합니다. 이 때 map을 사용하면 간편합니다.
num = "1234"
print(sum(map(int,num))
#결과: 10
map을 사용해서 리스트 형식으로 변환할 수 있습니다.
대표적인 활용으로는 문자 처리 되어 있는 것을 int형으로 바꾸려고 할 때
map(int, ['1', '2', '3'])
을 실행하면 [1, 2, 3]
을 출력받습니다.
하나의 묶음으로 변환하기 위해서도 사용합니다.
num = "1234"
를 list(map(int, num))
하면 [1, 2, 3, 4]
를 받습니다.
list(map(함수, 순회 가능한 자료구조))
여기서 list로 만들어 주지 않았다면 어떻게 될까요??
num = "1234"
print(map(int, num))
이 처럼 메모리 주소값이 출력됩니다.
문자열을 정수로 변환하기
문제 설명
숫자로만 이루어진 문자열 n_str
이 주어질 때, n_str
을 정수로 변환하여 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤
n_str
≤ 5 n_str
은 0부터 9까지의 정수 문자로만 이루어져 있습니다.
입출력 예
n_str | result |
---|---|
“10” | 10 |
“8542” | 8542 |
solution
def solution(n_str):
return int(n_str)
댓글남기기