본문 바로가기

프로그래밍/파이썬 - 기초🌱

[프로그래머스] 코딩 기초 > 주사위 게임2

 

코딩테스트 연습 - 주사위 게임 2 | 프로그래머스 스쿨

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

🌱 내 코드

import collections
def solution(a, b, c):
    list = [a, b, c]
    counter = collections.Counter(list)
    # 세 숫자가 모두 다른 경우
    if all([i==1 for i in counter.values()]) == True:
        return a + b + c
    # 세 숫자 중 두개가 같은 경우
    elif 2 in counter.values():
        return (a + b + c)*(a**2 + b**2 + c**2)
                
    # 세 숫자 모두 같은 경우
    else:
        return (a + b + c) * (a**2 + b**2 + c**2 ) * (a**3 + b**3 + c**3 )

 

↪ 사실 주사위3을 하다가 만 상태에서 주사위2를 보고 아 Counter를 써야겠다 생각함. 

↪ Counter는 딕셔너리 메소드를 쓸 수 있는데 이를 이용하여 counter.values()의 값을 보고 전부 1이면 셋다 다른 경우, 2가 있으면 두개가 같은 경우, 3이면 셋다 같은 경우로 판단하여 코드를 작성함. 

 

💫 Counter

파이썬 collections 모듈의 Counter 사용법 | Engineering Blog by Dale Seo

 

파이썬 collections 모듈의 Counter 사용법

Engineering Blog by Dale Seo

www.daleseo.com

 

🌱 다른 사람 풀이1

# set(): 순서가 없는 중복되지 않은 데이터의 집합
# set로 중복을 없애고나서 길이로 체크함.
def solution(a, b, c):
    check=len(set([a,b,c]))
    # 세 숫자 모두 같은 경우
    # a == b == c
    if check==1:
        # 3*(3*a) * 3*(a**2) * 3*(a**3)
        return 3*a*3*(a**2)*3*(a**3)
    elif check==2:
        return (a+b+c)*(a**2+b**2+c**2)
    else:
        return (a+b+c)

 

↪ set()은 집합이어서 중복된 요소를 허용하지 않음. 이를 이용할 생각은 하지도 못함! ㄴㅇㄱ

 

💫 set()

파이썬 세트(set) 완벽 가이드 | Engineering Blog by Dale Seo

 

파이썬 세트(set) 완벽 가이드

Engineering Blog by Dale Seo

www.daleseo.com

 

🌱 다른 사람 풀이2

# 기본적으로 조건을 하나도 만족하지 않을 경우 
# -> 세 숫자가 모두 다른 경우가 디폴트 answer값
def solution(a, b, c):
    answer=a+b+c
    # 두개의 숫자가 같을 경우 
    if a==b or b==c or a==c: answer*=a**2+b**2+c**2
    # 모두 같을 경우, 단일 if문이기때문에 if문전부 실행됨
    if a==b==c:answer*=a**3+b**3+c**3
    return answer

 

↪ 기본적으로 if문을 사용하여 단순하고 간결하게 코드 작성 ㅇ0ㅇ)b

↪ if, elif를 사용한 것이 아닌 개별 if문을 사용함. 세개의 숫자가 전부 같을 경우, 두개의 숫자가 같은 경우의 if문도 같이 실행돼서 answer가 계산됨!!

 

Counter.ipynb
0.01MB

(제코베 Counter 영상보고 정리한 ipynb파일임)

 

https://youtu.be/0EQlGF-ITi8?si=lTDdvWPYPQfcJW9A