[Python] 머쓱이보다 키 큰 사람

손성수·2023년 4월 1일

알고리즘

목록 보기
10/10

핵심 내용

  • 정렬
    • sort()
      오름 차순 정렬
    • sort(reverse=True)
      내림차순 정렬
  • 리스트 추가, 리스트 탐색
    • append()
      반환 받은 값을 리스트 요소에 추가한다.
    • index()
      반환 받은 값을 리스트의 요소에서 탐색하여, index를 반환한다.
  • filter(함수,배열)
    • 함수의 조건에 충족된 배열을 리스트 형태로 반환한다.

머쓱이보다 키 큰 사람

나의 접근 방법

  • 주어진 입력값 보다 큰 수의 값이 몇개인지 판단하는 문제였다.
  • sort(reverse = True) 를 통해 내림차순 정렬한다.
  • 반복문을 통해 비교값 보다 크다면 미리 선언한 cnt 변수에 1씩 더하고
  • 작다면 반복문을 중단하고 cnt값을 리턴한다.

나의 풀이 방법

def solution(arr,height):
    arr.sort(reverse = True)
    cnt = 0
    for i in arr:
        if i > height:
            cnt +=1
        else :
            break
    return cnt

더 좋은 풀이

def solution(arr,height):
    arr.append(height)
    arr.sort(reverse=True)
    return arr.index(height)

for문을 반복하며 값을 탐색하는 나의 풀이와는 달리
훨씬 직관적이고 효율적인 코드다.
append 메소드를 이용해 리스트에 추가하고
sort(reverse=True) 메소드를 통해 내림차순 정렬해서
해당하는 값의 index를 반환한다.
index 메소드는 값이 없을때는 ValueError가 발생하는데,
위 알고리즘은 이러한 경우의 수가 없으니 아주 적절한 사용방법이 될 수 있다.

lambda와 filter를 활용한 풀이

def solution(arr,height):
	return len(list(filter(lambda x:x>height,arr)))
  • len() 리스트의 길이를 반환한다.
  • list() 리스트 형태로 묶어준다.
  • filter(함수,배열)
    함수의 조건에 충족된 배열을 리스트 형태로 반환한다.
  • lambda 익명함수, 간단한 로직의 결과값을 처리해준다.
profile
더 노력하겠습니다

0개의 댓글