문제: 코딩테스트 연습 - 삼각형의 완성조건 (2) | 프로그래머스 스쿨 (programmers.co.kr)
문제설명
선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
- 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
삼각형의 두 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다.
나머지 한 변이 될 수 있는 정수의 개수를 return하도록 solution 함수를 완성해주세요.
제한사항
- sides의 원소는 자연수입니다.
- sides의 길이는 2입니다.
- 1 ≤ sides의 원소 ≤ 1,000
입출력 예
sides | result |
[1, 2] | 1 |
[3, 6] | 5 |
[11, 7] | 13 |
나의 문제 풀이
import java.util.HashSet;
class Solution {
public int solution(int[] sides) {
int answer = 0;
HashSet<Integer> set = new HashSet<>();
int A = sides[0] > sides[1]? sides[0] : sides[1]; //큰 수
int B = sides[0] > sides[1]? sides[1] : sides[0]; //작은 수
//i가 다른 두변의 길이 중 하나일 때
for (int i = 1; i < A; i++) {
if(i + B > A && !set.contains(i)) {
set.add(i);
}
}
//i가 가장 긴 변 일 때
for (int i = A; i < A + B; i++) {
int sum = A + B;
if(i < sum && !set.contains(i)) {
set.add(i);
}
}
answer = set.size();
return answer;
}
}
다른 사람의 문제풀이
//다른사람의 풀이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]);
answer += min * 2 - 1;
return answer;
}
}
//다른사람의 풀이2
class Solution {
public int solution(int[] sides) {
int answer = 0;
int max = sides[0] + sides[1] - 1;
int min = 0;
if (sides[0] > sides[1]) {
min = sides[0] - sides[1];
} else {
min = sides[1] - sides[0];
}
answer = max - min;
return answer;
}
}
느낀점
다른사람의 풀이를 보고 와 이렇게 풀 수도 있구나 라고 생각 했다..
'코딩테스트 연습 > 프로그래머스 LV.0' 카테고리의 다른 글
[프로그래머스] Lv.0 숨어있는 숫자의 덧셈 (2) - 자바(Java) (0) | 2024.05.08 |
---|---|
[프로그래머스] Lv.0 안전지대 - 자바(Java) (0) | 2024.05.06 |
[프로그래머스] Lv.0 외계어 사전 - 자바(Java) (0) | 2024.05.03 |
[프로그래머스] Lv.0 저주의 숫자 3 - 자바(Java) (2) | 2024.05.01 |
[프로그래머스] Lv.0 평행 - 자바(Java) (0) | 2024.04.29 |