일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 파이썬 #python #기초 #기본
- #코딩독학 #코딩인강 #코딩배우기 #개발자 #코딩이란 #코딩교육 #프론트엔드부트캠프 #백엔드부트캠프 #국비지원부트캠프 #개발자 #백엔드 #AI부트캠프 #개발자국비지원 #백엔드개발자
- #프론트엔드개발자
- Today
- Total
아자아자 화이팅이닷 !
230821 프로그래머스 문제풀기 본문
* 구슬을 나누는 경우의 수 문제에서
문제 하단에 있는 힌트에
이렇게 쓰여있는걸 보고 팩토리얼을 사용하면 되겠다 싶었다 ,,!
우리가 팩토리얼을 구할때에는 3가지 방법을 사용할 수 있다.
첫번째는, for 반복문을 사용하는 것이다.
#for문을 사용한 팩토리얼 소스 코드
a = int(input("팩토리얼을 구할 숫자를 입력하세요 : "))
result = 1
for item in range(1, a+1, 1):
result *= item #result = result * item
print(result)
>>> 팩토리얼을 구할 숫자를 입력하세요 : 8
>>> 40320
두번째는, 재귀함수를 사용하는 것이다.
재귀함수란 함수 내부에서 자기자신을 호출하는 함수를 의미한다.
#재귀함수 사용
def my_factorial(n):
if(n > 1):
return n * my_factorial(n - 1)
else:
return 1
a = int(input("팩토리얼을 구할 숫자를 입력하세요 : "))
print(my_factorial(a))
>>> 팩토리얼을 구할 숫자를 입력하세요 : 5
>>> 120
def를 통해 my_factorial(n) 함수를 정의하였다.
여기에서 정의한 my_factorial이 재귀함수이다.
해당 함수는 입력받은 파라미터 값이 1 보다 크면 = 입력받은수 * my_factorial(n -1) 을 리턴한다.
사용자의 입력이 5인 경우
my_factorial(5) 호출
5 > 1, 따라서 5 * my_factorial(4) 호출
4 > 1, 따라서 4 * my_factorial(3) 호출
3 > 1, 따라서 3 * my_factorial(2) 호출
2 > 1, 따라서 2 * my_factorial(1) 호출
1 > 1는 거짓 따라서 1을 리턴함
세번째는, math라이브러리에서 제공하는 factorial함수를 사용하는 것이다.
#math라이브러리 사용
import math
a = int(input("팩토리얼을 구할 숫자를 입력하세요 : "))
print(math.factorial(a))
>>> 팩토리얼을 구할 숫자를 입력하세요 : 6
>>> 720
팩토리얼에 대한 쉬운 설명이 되어있는
https://blockdmask.tistory.com/528
[python] 파이썬 팩토리얼(factorial) 구하기 3가지 방법
안녕하세요. BlockDMask입니다. 오늘은 파이썬에서 팩토리얼을 구하는 3가지 방법에 대해서 이야기해보려 합니다. 1. 재귀를 이용한 팩토리얼 2. 반복을 이용한 팩토리얼 3. math.factorial 함수를 이용
blockdmask.tistory.com
를 참고하면 좋을 것 같다 !
그래서 나는 math함수를 import해서 이 문제를 해결하였다 !
import math
def solution(balls,share):
return math.factorial(balls) / ((math.factorial(balls-share)) * math.factorial(share))
그런데 comb함수를 사용하면 더 쉽게 풀리는 문제였다 !
comb()함수는 comb(n,k) : 조합함수로
- 반복과 순서 없이 n 개의 항목에서 k 개의 항목을 선택하는 방법의 수를 반환한다.
math.comb(M,N)를 사용하면 M개에서 N개를 조합으로 선택할 때의 경우의 수를 출력한다.
그래서
import math
def solution(balls, share):
return math.comb(balls, share)
이렇게 하면 더 간단하게 풀 수 있다 !
WoW

* 삼각형의 완성조건(2) 문제에서는
처음에
def solution(sides):
count = 0
if k < sides[0] + sides[1]:
k + min(sides) > max(sides)
count += 1
return count
이렇게 일단 짜긴 했는데 k를 어떻게 선언을 해야할지 모르겠어서 고민을 좀 했돠 ..
구글링을 해본 결과 아주 쉽게 푸는 코드가 있었다 ..
[코딩테스트 lv0 파이썬]삼각형의 완성조건(2)
기존에 알고 있는 변이 a, b라고 하자.(a>b)이때, 새로 입력 받는 c가 a보다 클 수도 있고 같을 수도 있고 작을 수도 있다.선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니
velog.io
아주 쉽게 설명해 놓으셨다 !
그래서 결론적으로는
def solution(sides):
return 2*min(sides) - 1
이렇게 코드를 짜면 된다 !
c를 새로운 수라고 놓고, a가 sides에서 제일 큰 수, b가 sides에서 제일 작은수라고 놓고
경우의 수를 3가지로 놓은다음 계산을 하면 된다 !
좀 수학적으로 접근할 필요가 있던 문제였던 것 같돠 ,,
* 조건 문자열 문제는
처음 봤을때는 어떻게 풀어야할지 감이 안왔는데,
직관적으로 풀면 풀리는 문제였다 .!
그런데 이 문제는 eval()함수를 사용하면 간단하게 풀리는 문제였다 !
eval함수는 매개변수로 받은 식을 문자열로 받아서, 실행하는 함수이다.
https://blockdmask.tistory.com/437
[python] 파이썬 eval 함수 정리 및 예제
안녕하세요. BlockDMask 입니다. 오늘은 조금 색다른 함수인 eval 이라는 함수를 가지고 왔습니다. 이 함수는 간단해서 이해하는데는 문제가 없을 것 입니다. 하지만, 이 함수가 유용한게 맞는지 유
blockdmask.tistory.com
이걸 참고하면 좋을 것 같다 !
그래서 이 문제는
def solution(ineq, eq, n, m):
return int(eval(str(n)+ineq+eq.replace('!', '')+str(m)))
이렇게 replace함수까지 써서 한줄로 끝낼 수 있는 문제여따 ..!
생각해내는게 어렵다 .. ㅜ

뭔가 건드려본건 꽤 있는데 실속은 잘 모르겠다 ㅠ
후에엥 ..
그래도 화이팅이닷 !
포기하지 말자고 ,,~!
'TIL' 카테고리의 다른 글
230824 SQLD 자격증 공부 & 토익공부 (0) | 2023.08.24 |
---|---|
230822 프로그래머스 문제풀기 & 온라인 스터디 & 토익공부 (0) | 2023.08.22 |
230818 프로그래머스 문제풀기 (0) | 2023.08.18 |
230817 프로그래머스 문제풀기 (0) | 2023.08.17 |
230811 프로그래머스 안풀렸던 문제 도전해보기 & 코드잇 강의 & 저번 미니강의 Q&A (0) | 2023.08.12 |