본문 바로가기
반응형
Algorithm

[프로그래머스] Lv.0 삼각형의 완성조건 (2)

by brightGarden02 2022. 10. 28.

* 순서

- 문제

- 문제설명

- 문제풀이

- 최종코드

 

- 문제

 

- 문제설명

세 개로 삼각형을 만들려고 한다.

두변의 길이가 주어질 때 나머지 한변을 구한다.

나머지 한변이 될 수 있는 정수의 개수를 구하는 문제이다.

조건: 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 한다.

 

 

- 문제풀이

1. 나머지 한변의 길이의 범위는 두 변의 길이의 합까지로 한다.(나머지 한변의 길이가 가장 길 경우일 때 나머지 한 변의 길이가 최대값이기 때문)

2. a, b, c 세 변의 길이 중에서 한 변의 길이가 가장 클 경우에 대해 분기를 나눈다.

3. 조건을 적용한다.(조건: 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 한다.)

4. Set<Integer>을 이용하여 나머지 한변의 길이의 중복을 막는다.

 

 

1. 나머지 한변의 길이의 범위는 두 변의 길이의 합까지로 한다.(나머지 한변의 길이가 가장 길 경우일 때 나머지 한 변의 길이가 최대값이기 때문)

for (int a = 1; a <= sum; a++) {

}

 

 

2. a, b, c 세 변의 길이 중에서 한 변의 길이가 가장 클 경우에 대해 분기를 나눈다.(이 중 a가 가장 큰 경우)

3. 조건을 적용한다.(조건: 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 한다.)

//a가 가장 큰 경우
if(a >= b && a >= c) {
    if(a < b + c) {

    }
}

 

 

4. Set을 이용하여 나머지 한변의 길이의 중복을 막는다.

if(set.add(a)) {
    answer++;

}

 

 

- 최종코드

package coding;

import java.util.HashSet;
import java.util.Set;

public class Main {

    public static void main(String[] args) {
        
        int[] sides = {1, 2};
//        int[] sides = {3, 6};
//        int[] sides = {11, 7};

        int solution = solution(sides);
        System.out.println("solution = " + solution);
    }


    public static int solution(int[] sides) {
        int answer = 0;

        int b = sides[0];
        int c = sides[1];
        int sum = b + c;
        Set<Integer> set = new HashSet<>();
        for (int a = 1; a <= sum; a++) {

           //a가 가장 큰 경우
            if(a >= b && a >= c) {
                if(a < b + c) {
                    if(set.add(a)) {
                        answer++;

                    }
                }
            }

            //b가 가장 큰 경우
            if(b >= a && b >= c) {
                if(b < a + c) {
                    if(set.add(a)) {
                        answer++;

                    }
                }
            }


            //c가 가장 큰 경우
            if(c >= a && c >= b) {
                if(c < a + b) {
                    if(set.add(a)) {
                        answer++;

                    }
                }
            }

        }


        return answer;
    }

}

댓글


반응형
반응형