코딩테스트 연습 - 주사위 게임 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파일임)
https://youtu.be/0EQlGF-ITi8?si=lTDdvWPYPQfcJW9A
'프로그래밍 > 파이썬 - 기초🌱' 카테고리의 다른 글
[프로그래머스] 코딩 기초 > 이어 붙인 수 (2) | 2024.11.01 |
---|---|
[프로그래머스] 코딩 기초 > 원소들의 곱과 합 (0) | 2024.11.01 |
[프로그래머스] 코딩 기초 > 등차수열의 특정한 항만 더하기 (0) | 2024.11.01 |
[프로그래머스] 코딩 기초 > 코드 처리하기 (0) | 2024.10.30 |
[프로그래머스] 코딩 기초 > 조건문자열 (2) | 2024.10.28 |