[프로그래머스] 삼각형의 완성조건 (2) – JAVA

프로그래머스 “삼각형의 완성조건 (2)” 문제 해결과정입니다.

삼각형의 완성조건 (2)

문제설명

선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.

  • 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.

삼각형의 두 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다.
나머지 한 변이 될 수 있는 정수의 개수를 return하도록 solution 함수를 완성해주세요.

제한사항

  • sides의 원소는 자연수입니다.
  • sides의 길이는 2입니다.
  • 1 ≤ sides의 원소 ≤ 1,000

입출력 예

sidesresult
[1, 2]1
[3, 6]5
[11, 7]13

문제 해결과정

본인은 프로그래머스에서 코드를 작성하기에 어려움을 느껴 먼저 이클립스에서 코드를 실행하고 확인 후 프로그래머스 웹 텍스트 에디터로 옮기는 작업을 했다. 이클립스에서 클래스 파일을 생성하고 main에서 실행하여 확인하였다.

이클립스 코드

Array.sort 사용하기
package Practice;

import java.util.*;

public class practice6 {
	public static void main(String[] args) {
		int[] sides = {1,2};
		int answer = 0;
		int max = 0;
		int min = 0;

		Arrays.sort(sides);
		max = sides[1];
		min = sides[0];
		
		answer = (max + min) - (max - min) - 1;
		System.out.println(answer);
	}
}

문제를 어떻게 풀지 고민이 많이 됐는데, 먼저 삼각형의 두 변과 나머지 하나의 변수가 존재한다. 여기서 각 수들 중 제일 큰 것을 고른 후에 각 경우의 수를 다 비교해야 하나 ? 하며 while문도 써보았다…그런데 이 방식은 너무 코드가 길어지고, 또 math 메소드를 사용할까 했지만 굳이? 라는 생각이 들었다. 여러 시행착오 이후에 주어진 예시에서 규칙을 발견했다. sides의 요소들 중에서 (큰 수 + 작은 수) - (큰 수 - 작은 수) - 1라는 규칙이 있었다. 규칙을 찾고 나니 생각했던 것보다 코드가 간단하게 나왔다…

먼저 예시와 max, min을 선언한다. Arraysort를 사용하여 sides 배열을 정렬시킨 후 max와 min 변수에 각각 값을 넣어준다. 이후에 위에서 언급했던 식으로 print해주면 끝.

Array.sort 사용x

package Practice;

public class practice6 {
	public static void main(String[] args) {
		int[] sides = {1,2};
		int answer = 0;
		int max = 0;
		int min = 0;

		max = sides[0] > sides[1] ? sides[0] : sides[1];
		min = sides[0] < sides[1] ? sides[0] : sides[1];
		
		answer = (max + min) - (max - min) - 1;
		System.out.println(answer);
	}
}

Arraysort를 사용하지 않고 삼항연산자로 풀이했다. 이외에 고칠 점은 없었다.

프로그래머스 코드

import java.util.*;

class Solution {
    public int solution(int[] sides) {
        
		int max = 0;
		int min = 0;
		// 1
		max = sides[0] > sides[1] ? sides[0] : sides[1];
		min = sides[0] < sides[1] ? sides[0] : sides[1];
		// 2
		Arrays.sort(sides);
		max = sides[1];
		min = sides[0];
		
		return (max + min) - (max - min) - 1;
    }
}

프로그래머스 코드에는 이클립스 코드를 복사해와 print문으로 확인하던 정답을 return으로 변경해주었다. 이후로 실행시켜보니 두 코드 다 잘 동작하였다.

참고 – https://codegym.cc/ko/groups/posts/ko.1107.java—

최신글

댓글 남기기

광고 차단 알림

광고 클릭 제한을 초과하여 광고가 차단되었습니다.

단시간에 반복적인 광고 클릭은 시스템에 의해 감지되며, IP가 수집되어 사이트 관리자가 확인 가능합니다.