코밍이의 하루

[Lv0]머쓱이보다 키 큰 사람(Python) 본문

알고리즘/프로그래머스

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

코밍이 2023. 2. 17. 15:26

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/120585

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

[나의 풀이]

def solution(array, height):
    cnt = 0
    for n in array:
        if n > height:
            cnt += 1
    return cnt

[다른 사람의 풀이]

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

1. 사용한 개념

 

1) if , else 조건문

2) for 반복문

3) 배열

 

2. 풀이 후기

- 나는 조건문, 반복문을 많이 사용하다 보니 이 문제의 경우도 반복문으로 접근했다. 다른사람이 푼 것처럼 배열로 접근해보고 싶으면 아직 배열에 대한 개념이 체화되지 않은 느낌이 든다. 구글링을 하면 찾아서 쓸 수 있는 정도이고 아직 메소드를 외워서 쓰지는 못한다. 물론 문법이 많다보니 외우는 건 실질적으로 부족하고 비효율적이다. 어차피 시간이 흐르면 까먹기 때문이다. 그리고 손코딩이 아닌 이상 공식 문서를 참고할 수 있기 때문에 외울 이유도 없다. 다만 이 문법을 사용하면 해결할 수 있겠다 정도로는 알아둘 필요가 있을 것 같다. 나는 문제를 for in을 통해 배열 안 요소를 하나씩 읽으면서 height보다 큰 경우에만 개수를 세고 총 개수를 출력해주는 형태로 취했다. 다른 풀이를 보면 배열안에 height 옮기고 .sort()를 통해 정렬하고 그 정렬한 배열을 .reverse()를 통해 배열을 역순으로 저장하고 있다. 역순으로 저장하는 이유는 해당 문제가 height보다 키 큰 사람들을 세는 것이기 때문에 내림차순으로 정렬되어야 키 큰 순으로 정렬된다. 이후 height의 인덱스를 출력하여 푸는 형태이다. .sort()와 .reverse()를 합친 .sort(reverse=True)도 있다. 처음에는 .sort(reverse=True) 이것이 이해가 안되서 풀어서 썼다. 

'알고리즘 > 프로그래머스' 카테고리의 다른 글

[Lv0] 문자 반복 출력하기(Python)  (0) 2023.02.17
[Lv0] 몫 구하기(Python)  (0) 2023.02.17
[Lv0] 두 수의 합(Python)  (0) 2023.02.17
[Lv0] 두 수의 차(Python)  (0) 2023.02.17
[Lv0] 두 수의 나눗셈(Python)  (0) 2023.02.17