Post

[Programmers] #120868 - 삼각형의 완성조건 (2) [Java][C++][Python]

[Programmers] #120868 - 삼각형의 완성조건 (2) [Java][C++][Python]

문제 링크


1. 아이디어

삼각형의 두 변이 주어질 때, 나머지 한 변이 될 수 있는 정수의 개수를 구하는 문제로 나머지 한 변이 가장 긴 변이 되는 경우와 그렇지 않은 경우 두 가지로 케이스 분류를 해보면 된다.

주어진 두 변을 $a$, $b$($a \le b$) 나머지 한 변을 $c$라고 할 때, $c$가 가장 긴 변이 되는 경우는 $c$가 $b + 1$부터 $a + b - 1$까지의 정수가 가능하다. $c$가 가장 긴 변이 아닌 경우는 $c$가 $b - a + 1$부터 $b$까지의 정수가 가능하다. 두 범위가 겹치지 않고 연속으로 이어지므로 $c$는 $b - a + 1$부터 $a + b - 1$까지 가능하고 이 구간의 정수의 개수는 $2a - 1$개다. 따라서 주어진 두 변 중 더 작은 변의 길이에 두 배를 한 후 1을 빼서 반환하면 된다.


2. 복잡도

접근시간공간
풀이$O(1)$$O(1)$

3. 코드

풀이 [Java][C++][Python]

1
2
3
4
5
class Solution {
    public int solution(int[] sides) {
        return Math.min(sides[0], sides[1]) * 2 - 1;
    }
}
1
2
3
4
5
6
#include <bits/stdc++.h>
using namespace std;

int solution(vector<int> sides) {
    return min(sides[0], sides[1]) * 2 - 1;
}
1
2
def solution(sides):
    return min(sides[0], sides[1]) * 2 - 1

This post is licensed under CC BY 4.0 by the author.