map 내장함수
파이썬의 내장함수인 map() 은 여러개의 데이터를 한번에 다른 형태로 변화하기 위해서 사용된다.
여러개의 데이터를 담고 있는 list나 tuple을 대상으로 주로 사용하는 함수이다.
map(변환 함수, 순회 가능한 데이터)
map() 함수는 두번째 인자로 넘어온 모든 데이터에 첫번째 인자로 들어온 변환 함수를 적용하여 다른 형태의 데이터를 반환한다.
예시 - 프로그래머스 LV2. 최댓값과 최솟값
https://school.programmers.co.kr/learn/courses/30/lessons/12939
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
정답 코드
def solution(s):
numbers = list(map(int, s.split())) # s를 공백으로 분리해서 하나씩 int로 변환
return str(min(numbers)) + " " + str(max(numbers))
map 함수를 이용해 s에 있는 "1 2 3 4"를 하나씩 앞에 있는 int로 변환해준다.
예시 - 프로그래머스 LV2. 가장 큰 수
https://school.programmers.co.kr/learn/courses/30/lessons/42746
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
정답 코드
def solution(numbers):
nums = list(map(str, numbers)) # numbers를 하나씩 str로 변경해서 list로 묶기
nums.sort(key = lambda x : x * 3, reverse = True) #number는 1000이하 이니까 x3한 값으로 비교해서 역정렬
return str(int(''.join(nums)))
결과
print(solution([6, 10, 2])) # result : 6210
print(solution([3, 30, 34, 5, 9])) # result : 9534330
print(solution([0,0,0,0])) # result : 0
x * 3을 하는 이유?
- num의 인수값이 1000 이하이므로 3자리수로 맞춘 뒤, 비교하겠다는 뜻이다.
- 문자열 비교는 ASCII 값으로 치환되어 정렬된다. 따라서 666, 101010, 222의 첫번째 인덱스 값으로 비교한다.
※ 아스키 코드(ASCII)란 영문자 또는 숫자를 2비트 문자로 표현하는 방식
- 6 = 86, 1 = 81, 2 = 82 이므로 6 > 2 > 1순으로 크다.
- sort()의 기본 정렬 기준은 오름차순이다. reverse = True 전의 sort된 결과값은 10, 2, 6이다.
- 이를 reverse = True를 통해 내림차순 해주면 6,2,10이 된다. 이것을 ‘‘.join(num)을 통해 문자열을 합쳐주면 된다.
int로 변환한 뒤, 또 str로 변환해주는 이유?
- 모든 값이 0일 때(즉, ‘000’을 처리하기 위해) int로 변환한 뒤, 다시 str로 변환한다.
'🛠️Skill > Python' 카테고리의 다른 글
[Python] 여러개 함수 사용 agg() (0) | 2022.11.20 |
---|---|
[Python] 숫자인지 문자인지 확인하기 isdigit / isalpha (0) | 2022.11.02 |
[Python] 정렬하는 방법 sort 와 reverse 이해하기 (0) | 2022.10.27 |
[Python] 데이터 합치기 Join, merge, concat (0) | 2022.10.11 |
[Python] 클래스(class) / 인스턴스, 객체, self, super 이해하기 (0) | 2022.10.05 |
댓글