반응형
- 삼각형 완성 조건 : 가장 긴 변 < 다른 두 변의 합
- 가장 긴 변이 sides 내에 있는지 아닌지를 나누고 진행해야 한다.
sides = [1, 2] ## 답 1
1. range()
def solution(sides):
result = 0
# sides 안에 가장 긴 변이 있는 경우
for i in range(1, max(sides)):
if i + min(sides) > max(sides):
result += 1
# sides 안에 가장 긴 변이 없는 경우
for i in range(max(sides), sum(sides)):
if sum(sides) > i:
result += 1
return result
1-1. list compression
def solution2(sides):
n1 = len([i for i in range(1, max(sides)) if i + min(sides) > max(sides)])
n2 = len([i for i in range(max(sides), sum(sides))])
return n1 + n2
2. 공식
def solution3(sides):
return 2 * min(sides) - 1
알고 있는 변의 길이 : b < a이고, 새로운 변 : c 일때
1. c가 가장 긴 변이 될 때 : a < c < a+b
이때 가능한 c의 갯수는 c < b 이므로 b-1개가 된다.
2. c가 가장 긴 변이 아닐 때 : a가 가장 긴변이 된다. c < a < a+b
이때 가능한 c의 갯수는 c < b 이므로 b-1개가 된다.
3. c=a 일 때는 1가지 경우 밖에 없다.
1+2+3의 경우의 수를 다 더하면 2b-1이며, 맨 처음 설정한 b < a를 고려하면, b는 sides의 작은 값이 된다.
반응형
'프로그래밍 > 알고리즘 & 자료구조' 카테고리의 다른 글
[프로그래머스] 캐릭터의 좌표 with 파이썬 (0) | 2023.04.11 |
---|---|
[프로그래머스] 로그인 성공? with 파이썬 (0) | 2023.04.10 |
[프로그래머스] 팩토리얼 with 파이썬 (0) | 2023.04.08 |
[프로그래머스] 문자열 계산하기 with 파이썬 (0) | 2023.04.07 |
[프로그래머스] 잘라서 배열로 저장하기 with 파이썬 (0) | 2023.04.07 |
댓글