Base/Algorithm Study

[Python/파이썬] 백준 알고리즘 2908번 - 상수

koh1018 2021. 8. 15. 12:55
반응형

주어진 세자리 수인 두 수를 비교해 더 큰 쪽을 출력하라는 문제이다.

 

 

 

<풀이>

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 함수도 문자열 자체를 바꾸는게 아니라 새 문자열을 만들어 반환하는 방식이다.

반응형