[3코1파] #02. Lv1 삼총사

gunny·2023년 1월 5일
0

코딩테스트

목록 보기
2/530

3명의 안드로이드 개발자와 1명의 파이썬 개발자의 코딩 테스트 서막 : 3코1파

Rule :

하루에 1문제씩 풀기.
한 문제당 30분씩은 고민하기.
왜 그렇게 풀었는지 공유하기.
하루라도 놓친다면 벌금은 1,000원

START :

2023.01.04~

Today :

2023.01.05 [2일차]

프로그래머스 LV1.
삼총사문제
https://school.programmers.co.kr/learn/courses/30/lessons/131705

문제 요약

한국중학교에 다니는 학생들은 각자 정수 번호를 갖고 있습니다. 이 학교 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사라고 합니다. 예를 들어, 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때, 첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사입니다. 또한, 두 번째, 네 번째, 다섯 번째 학생의 정수 번호를 더해도 0이므로 세 학생도 삼총사입니다. 따라서 이 경우 한국중학교에서는 두 가지 방법으로 삼총사를 만들 수 있습니다.

문제 풀이

보자마자 itertools 모듈 써서 풀면 되는 문제라고 두뇌풀가동됨(ㅎㅅㅎ 뿌듯)
itertools의 permutations을 써서 풀었음
permutations의 문제인 중복으로 조합되는 부분을 tuple을 set으로 바꿨다하는 요지경적인 함수를 넣어서 일단 처음 주어진 3문제 무사통과해서.. 나란새끼.. 벌써 성장?

응 아니죠~

그래서 항상 내가 아리까리하던 조합문제구나 싶었음

조합으로 테스트 했을 때,
내가 굳이 굳이 굳이의 아이콘으로 tuple을 set으로 해서 하던 뻘짓을 안해도 알아서
조합은 동일 판단을 해줘서... 할 필요가 없었던 것임 (C8)

주어진 number = [-2,3,0,2,-5] 에 대한
조합

순열

그래서 그냥 조합을 사용해서 푸니까 끝남

코드 공유

import itertools

def solution(number):
    answer = 0
    number_com = itertools.combinations(number,3)
    answer = sum([1 if sum(num)==0 else 0 for num in number_com])
    
    return answer

나도 고수님들처럼 list comprehenstion으로 한줄로 sum 따라해봄 ㅋㅎ

클리어 증빙

다른 사람 풀이

다른 새럼들도 조합으로 푼게 가장 베스트로 올라왔더라
고로 나도 베스트~ (아마도?)

여담

중학교에서 삼총사 만드는 것은 반 내 급우들에게 위화감을 조성할 수 있는 행위 이므로,
안해줬으면 좋겠다. 알겠니?

profile
꿈꾸는 것도 개발처럼 깊게

0개의 댓글