주어진 세자리 수인 두 수를 비교해 더 큰 쪽을 출력하라는 문제이다.
<풀이>
A, B = map(lambda num: num[::-1], input().split())
print(A) if A > B else print(B)
input().split() 하면 주어진 두 세자리 수가 문자열 element이 된 리스트가 반환된다.
map함수를 이용해 이 리스트(iterator)의 element들을 lambda num: num[::-1]라는 함수에 넣고 A와 B라는 변수에 각각 집어넣는다.
lambda는 이름이 없는 함수로 함수를 한줄로 간단하게 표현할 수 있게 해준다.
lambda (인자) : (표현식) <- 이렇게 사용하면 된다.
즉, num이라는 인자를 받아서(여기서는 input().split()으로 받은 리스트의 element인 문자열이다.) 그 문자열 num을 역순으로 바꾸어 반환하는 것이다. ( [::-1] : 역순)
그리고 마지막 줄은 삼항연산자로, 아래와 같이 사용한다.
(참인경우 값) if (조건) else (거짓인경우 값)
print(A) if A > B else print(B) 은 A>B인 경우 print(A)를 하고 반대의 경우 print(B)를 한다는 의미이다.
<핵심 정리>
1. input().split()은 리스트를 반환한다.
2. lambda는 익명의 함수이다. 함수를 한줄로 표현하게 해준다. lambda (인자) : (표현식) 으로 사용한다.
3. 삼항 연산자 : (참인경우 값) if (조건) else (거짓인경우 값)
4. 문자열을 역순으로 배치하려면 [::-1] 하면된다.
5. 문자열은 각 요소에 인덱스해 값을 바꾸는 것이 불가능하다. (ex. (문자열)[0] = 'A' 불가능) 바꾸고 싶다면 replace함수를 써야한다. replace 함수도 문자열 자체를 바꾸는게 아니라 새 문자열을 만들어 반환하는 방식이다.
'Base > Algorithm Study' 카테고리의 다른 글
[Python/파이썬] 백준 알고리즘 2869번 - 달팽이는 올라가고 싶다 (0) | 2021.08.16 |
---|---|
[Python/파이썬] 백준 알고리즘 1316번 - 그룹 단어 체커 (0) | 2021.08.15 |
[Python/파이썬] 백준 알고리즘 1152번 - 단어의 개수 (0) | 2021.08.15 |
[Python/파이썬] 백준 알고리즘 1065번 - 한수 (0) | 2021.08.15 |
[Python/파이썬] 백준 알고리즘 4673번 - 셀프 넘버 (0) | 2021.08.15 |