데이터 꿈나무

[코딩 테스트] 프로그래머스-머쓱이보다 키 큰 사람 본문

Activity/Algorithm

[코딩 테스트] 프로그래머스-머쓱이보다 키 큰 사람

ye_ju 2023. 1. 30. 21:15

문제 설명

머쓱이는 학교에서 키 순으로 줄을 설 때 몇 번째로 서야 하는지 궁금해졌습니다. 머쓱이네 반 친구들의 키가 담긴 정수 배열 array와 머쓱이의 키 height가 매개변수로 주어질 때, 머쓱이보다 키 큰 사람 수를 return 하도록 solution 함수를 완성해보세요.

제한사항

  • 1 ≤ array의 길이 ≤ 100
  • 1 ≤ height ≤ 200
  • 1 ≤ array의 원소 ≤ 200

입출력 예

array height result
[149, 180, 192, 170] 167 3
[180, 120, 140] 190 0

입출력 예 설명

입출력 예 #1

  • 149, 180, 192, 170 중 머쓱이보다 키가 큰 사람은 180, 192, 170으로 세 명입니다.

입출력 예 #2

  • 180, 120, 140 중 190보다 큰 수는 없으므로 0명입니다.

 

나의 문제 풀이

def solution(array, height):
    answer = 0
    for i in array:
        if i > height:
            answer += 1
        else:
            continue
        
    return answer

배열의 요소를 하나씩 뽑아내서 머쓱이의 키(height)보다 큰지 확인을 한다. 크다면 answer의 수를 하나 늘려준다.

그게 아니라면, 다시 반복.

 

※ 헷갈렸던 부분

맨 처음 시도를 for i in range(array)로 했는데 오류가 나서 찾아보니, 배열은 range를 붙일 수 없다. range는 정수 범위만을 나타낼 수 있다. 따라서 배열의 요소를 하나씩 뽑아내려면 배열이 저장되어있는 변수명만을 입력해주어야 한다.

 

 

참고할만한 다른 사람 문제 풀이

def solution(array, height):
    return sum(map(lambda x: x > height, array))

저번 포스팅에서 공부했던 lambda함수를 사용한 방법이다. 아직 lambda 함수가 익숙하지 않아 코드를 보고 lambda 함수를 써야겠다..! 라는 생각이 들지 않는다. 그래서 이 풀이가 눈에 들어왔다.

 

map 함수의 형태는 map(function, iterable)이다. 첫번째 매개변수로는 함수가 오고 두번째 매개변수로는 반복 가능한 자료형(리스트, 튜플 등)이 온다.

map(적용시킬 함수, 적용할 값들) 이런 식인 것이다.

 

그래서 height보다 큰 값이 array에서 몇 개가 있는지 sum 해준 것을 출력해주는 함수를 만든 것이다.

 

 

추가적으로 map함수에 대한 간단한 예제를 살펴보면,

result1 = list(map(int, [1.1, 2.2, 3.3, 4.4, 5.5]))
print(result1)

실행 결과

[1, 2, 3, 4, 5]

 

 

Comments