프로그래머스 LV0 - 삼각형의 완성조건(2)
입출력 예를 보고 2가지의 조건으로 변의 개수가 도출되는것을 보고 for문을 통해 2가지 조건을 각각 만들었다
- 입출력의 예시
가장 긴 변이 6인 경우 될 수 있는 나머지 한 변은 4, 5, 6 로 3개입니다. 나머지 한 변이 가장 긴 변인 경우 될 수 있는 한 변은 7, 8 로 2개입니다. 따라서 3 + 2 = 5를 return합니다.
- 시간 복잡도: O(n)
def solution(sides): answer = [] max_num = max(sides) min_num = min(sides) for i in range(1, max_num + 1): if max_num < min_num + i: answer.append(i) for j in range(max_num + 1, sum(sides)): if sum(sides) > j: answer.append(j) return len(set(answer))
그 외 풀이
def solution(sides):
return 2 * min(sides) - 1
……🫠🫠🫠🫠 수학적 공식을 이용한 느낌.. 이렇게 풀었을때 얻기 힘든것은 조건에 해당하는 모든 값들을 나열해야 되는 경우에는 사용할 수 없는 풀이 방법이 되긴 한다
자.. 한번 이해해보도록 노력해보자
풀이
i) c가 a보다 크면 대소관계는 c > a > b가 된다 a + b > c 이므로 a + b > c > a가 된다 즉 이때 가능한 c의 갯수는 b - 1개 ii) c가 a보다 작으면 대소관계는 a > b, a > c 가 된다 b + c > a 이므로 b + c > a > c가 된다 즉 이때 가능한 c의 갯수는 b - 1개 iii) c와 a가 같으면 c = a 한 가지 밖에 존재하지 않는다 다 합하면 (b - 1) + (b - 1) + 1 = 2 * b - 1 개가 된다 이때 초기 조건에 따라 b는 a보다 작다