프로그래머스 “삼각형의 완성조건 (2)” 문제 해결과정입니다.
삼각형의 완성조건 (2)
문제설명
선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
- 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
삼각형의 두 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다.
나머지 한 변이 될 수 있는 정수의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
sides의 원소는 자연수입니다.sides의 길이는 2입니다.- 1 ≤
sides의 원소 ≤ 1,000
입출력 예
| sides | result |
| [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—
최신글
![[프로그래머스] 잘라서 배열로 저장하기 - 자바](https://develog.co.kr/wp-content/uploads/2025/01/프로그래머스-잘라서-배열로-저장하기-자바-150x150.png)
![[프로그래머스] 붕대 감기 - 자바](https://develog.co.kr/wp-content/uploads/2024/11/프로그래머스-붕대-감기-자바-150x150.png)
![[프로그래머스] 달리기 경주 - 자바](https://develog.co.kr/wp-content/uploads/2024/11/프로그래머스-달리기-경주-자바-150x150.png)