주니어 기초 코딩공부/JAVA_programmers_코딩테스트
삼각형의 완성조건 (2)_programmers_lev00
jju_developer
2022. 12. 29. 15:15
728x90
<코딩 테스트>
선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
삼각형의 두 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 나머지 한 변이 될 수 있는 정수의 개수를 return 하도록 solution 함수를 완성해 주세요.
입출력 예 #3
가장 긴 변이 11인 경우
될 수 있는 나머지 한 변은 5, 6, 7, 8, 9, 10, 11로 7개입니다.
나머지 한 변이 가장 긴 변인 경우
될 수 있는 한 변은 12, 13, 14, 15, 16, 17로 6개입니다.
따라서 7 + 6 = 13을 return 합니다.
<나의 풀이 과정>
우선 삼각형의 두 변의 길이가 주어질 때
두 개를 더한 값과, 두 값을 뺀 값을 구했습니다.
삼각형의 변의 길이는 주어지는 두 변의 합보다 작아야 하며,
될 수 있는 변의 길이가 몇 개가 있느냐의 문제이기 때문에
마지막에 highLimit에서 lowLimit을 빼고 -1을 해주었습니다.
<나의 풀이 코드>
public class Test {
public static void main(String[] args) {
System.out.println(solution(new int[] { 1, 2 })); // 1;
System.out.println(solution(new int[] { 11, 7 })); // 13;
}
static int solution(int[] sides) {
// {11,7} 두변의 길이가 들어온다고 가정
// 두변의 길이 중 가장 큰 값 찾기
int bigValue = Math.max(sides[0], sides[1]);
// 작은 길이 찾기
int smallValue = Math.min(sides[0], sides[1]);
// 긴변 - 작은변 => 11-7 = 4
int lowLimit = bigValue - smallValue;
// 가장 큰변이 올수 있는 길이는? 11+4 = 18
int highLimit = bigValue + smallValue;
// 길이가 될수 있는 총 수 =>18-4-1 = 13
return highLimit - lowLimit - 1;
}
}
<다른 사람 풀이>
class Solution {
public int solution(int[] sides) {
int answer = 0;
// 값이 최대가 아닐 경우
int max = Math.max(sides[0], sides[1]);
int min = Math.min(sides[0], sides[1]);
for(int i=1; i<sides[0]+sides[1]; i++){
// i가 가장 큰 변일 때
if(i>max){
if(min+max>i){
answer++;
}
} else {
// i가 가장 크지 않을 때
if(min+i>max){
answer++;
}
}
}
// 값이 최대일 경우
return answer;
}
}
<다른 사람 풀이>
class Solution {
public int solution(int[] sides) {
int min=Math.min(sides[0], sides[1]);
int max=Math.max(sides[0], sides[1]);
int sum=sides[0]+sides[1];
int answer = 0;
for(int i=1;i<sum;i++) {
if(i<=min||i<max){//i가 중간값 또는 최솟값
if(max<min+i) {
answer++;
}
}else if(i>=max) {//i가 가장 긴 변이면
answer++;
}
}
return answer;
}
}
https://school.programmers.co.kr/learn/courses/30/lessons/120913
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
728x90