* 순서
- 문제
- 문제설명
- 문제풀이
- 최종코드
- 문제
- 문제설명
세 개로 삼각형을 만들려고 한다.
두변의 길이가 주어질 때 나머지 한변을 구한다.
나머지 한변이 될 수 있는 정수의 개수를 구하는 문제이다.
조건: 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 한다.
- 문제풀이
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;
}
}
'Algorithm' 카테고리의 다른 글
[프로그래머스 Java] 달리기 경주 Lv.1 (0) | 2023.09.05 |
---|---|
[정렬 알고리즘] 선택정렬(Selection Sort), 삽입정렬(Insertion Sort) (0) | 2023.05.21 |
[프로그래머스] Lv.0 안전지대 [JAVA] (0) | 2022.10.27 |
[LeetCode] 2446. Determine if Two Events Have Conflict (0) | 2022.10.23 |
백준 3009. 네 번째 점(Java) (0) | 2022.08.07 |
댓글