TIL

231028 프로그래머스 문제풀기 [고득점 Kit]

유초23 2023. 10. 29. 01:19
728x90

이제 고득점 Kit 문제풀이를 들어간닥 !

후후 떨리지만 신난다 ..

화이팅 해보자고 ~!~~~

뿌 셔 뿌 셔


처음은 <해시> 주제인 문제를 풀어보려고 한다 !

 

* 폰켓몬 문제에서는

 

중복을 제거해야한다고 생각해 set함수를 사용하고, 고를수 있는수로 len(num) // 2를 이용해야한다는것까지는 생각했는데, 그 둘을 어떻게 조합해야 답이 나오는지 결론을 내지 못해 다른 사람들의 힌트를 보아똬 .. ㅜ

 

이 문제를 풀기 위해서는 min함수를 사용하면 되는거였다 ..!

 

def solution(nums):
    kind = len(set(nums))
    pick = len(nums) // 2
    return min(kind,pick)

 

아주 간단하게 풀 수 있는 문제였다 ㅠ

 

더 간단하게 하고 싶다면

 

def solution(ls):
    return min(len(ls)/2, len(set(ls)))

 

이렇게 하면 된다 !

 

첫 문제 스스로의 힘으로 풀고 싶었는데 아쉽다 ㅠ

그래도 많은 문제가 남았으니 화이팅해보자고 !

중 꺾 마 레고 ~

 

아니 그냥

 \(@^0^@)/


* 완주하지 못한 선수 문제에서는

 

def solution(participant,completion):
    for i in participant:
        if i in completion:
            completion.remove(i)
        else:
            return i

 

이렇게 코드를 짜 최종 정확성 테스트는 모두 통과를 하였는데,

효율성 테스트를 다 실패했다 ㅋ.ㅋ ..

이거이거 조금 짜증나네 ? 하하 ..

 

그래서 다른분의 힌트를 얻어 코드를 작성해따 ㅠ

 

def solution(participant,completion):
    participant.sort()
    completion.sort()

    for a,b in zip(participant,completion):
        if a != b:
            return a
    return participant[-1]

sort함수와 zip함수를 사용하면 쉽게 풀 수 있는 문제였다 !

내가 너무 쉽게 생각했나보다 ㅠ

 

zip함수는

https://www.daleseo.com/python-zip/

 

파이썬의 zip() 내장 함수로 데이터 엮기

Engineering Blog by Dale Seo

www.daleseo.com

 

위의 코드는

[프로그래머스] 완주하지 못한 선수 - Lv.1 (tistory.com)

 

[프로그래머스] 완주하지 못한 선수 - Lv.1

[프로그래머스] 완주하지 못한 선수 Lv.1 - [파이썬/python] https://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발

1ets-just-do-it.tistory.com

에 잘 설명이 되어있다 !

 

그리고 다른 분들의 코드에서 본 collections counter라는 함수는 처음보는 함수라 서칭을 해보았다 !

 

counter함수는

https://www.daleseo.com/python-collections-counter/

 

파이썬 collections 모듈의 Counter 사용법

Engineering Blog by Dale Seo

www.daleseo.com

이 블로그를 참고하면 좋을 것 같다 !

 

그리고 collections counter함수에 대해서는

https://velog.io/@kimdukbae/Python-collections-%EB%AA%A8%EB%93%88%EC%9D%98-Counter

 

[Python] collections 모듈의 Counter

collections 모듈의 Counter 클래스는 컴퓨터 과학에서의 자료구조는 아니다. 하지만, Python 언어에서 지원하는 자료구조라고 생각했기에 자료구조 시리즈에 글을 포스팅하게 되었다.collections 모듈의

velog.io

이 블로그를 참고하면 좋을 것 같다 !

 

그래서 이 함수를 사용하여 이 문제를 풀면

 

import collections


def solution(participant, completion):
    answer = collections.Counter(participant) - collections.Counter(completion)
    return list(answer.keys())[0]

 

이렇게 간단하게 풀 수 있다 !

문제를 간단하게 풀 수 있는 새로운 함수를 알게되어 신기하닥 !

728x90