백준

백준 1181번 어떻게 풀었나. join(), lambda, sort(), set() 설명

kimbro6 2023. 1. 8. 00:01
  • 푼 방법
    • 내장함수 sort()와 set()을 사용함
  • 좋았던점
    • 원하는 동작을 하는 함수를 생각하고, 그 함수를 내장함수에서 찾았다.
  • 고치면 좋을 부분
    • 내장함수를 더 알고 있었으면 더 빨리 풀 수 있을거 같다.
  • 새롭게 안 내용
    • set()
      • 중복 제거
    • sort() 완벽하게
      • .sort(key=원하는 함수) 로 정렬 기준을 새울 수 있다.
      • key가 여러개일때
        • 튜플형식으로 key = lambda x: (x[0] , x[2]) lambda식을 세워주면 된다.
        • 그리고 내림차순으로 하고 싶다면 마이너스 부호를 붙여주면 된다. key= lambda x: (-x[0], x[2])
    • '구분자'.join(리스트) 
      • '_'.join(['a', 'b', 'c']) == "a_b_c" # = True
    • lambda
      • 사용법 :      lambda 매개변수 : 표현식
      • 아래 코드는 같은 기능을 한다.
>>> def hap(x, y):
...   return x + y
...
>>> hap(10, 20)
30

______________________________________

>>> (lambda x,y: x + y)(10, 20)
30


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


알파벳 순서가 아니라, 앞뒤 불필요한 공백을 제외한 문자의 길이로 정렬을 하고 싶다면:

def my_key(string):
     return len(string.strip())
     
target = ['  cat ', ' tiger ', '    dog', 'snake   ']
print(sorted(target, key=my_key))

______________________________________

print(sorted(target, key=lambda x : len(x.strip())))

코드 

import sys

N = int(sys.stdin.readline())
A = [sys.stdin.readline().rstrip() for _ in range(N)]
A = list(set(A))
A.sort()
A.sort(key=len)

print("\n".join(A))

참고자료

sort() : https://infinitt.tistory.com/122

join() : https://blockdmask.tistory.com/468

lambda : https://wikidocs.net/22804