
문제 설명
선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
- 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.
제한사항
- sides의 원소는 자연수입니다.
- sides의 길이는 3입니다.
- 1 ≤ sides의 원소 ≤ 1,000
입출력 예
sides | result |
[1, 2, 3] | 2 |
[3, 6, 2] | 2 |
[199, 72, 222] | 1 |
입출력 예 설명
입출력 예 #1
- 가장 큰 변인 3이 나머지 두 변의 합 3과 같으므로 삼각형을 완성할 수 없습니다. 따라서 2를 return합니다.
입출력 예 #2
- 가장 큰 변인 6이 나머지 두 변의 합 5보다 크므로 삼각형을 완성할 수 없습니다. 따라서 2를 return합니다.
입출력 예 #3
- 가장 큰 변인 222가 나머지 두 변의 합 271보다 작으므로 삼각형을 완성할 수 있습니다. 따라서 1을 return합니다.
[2] 정답 및 해석
#.1 정답 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include <stdio.h> #include <stdbool.h> #include <stdlib.h> int solution(int sides[], size_t sides_len) { int max_side = 0; int sum_of_other_sides = 0; // 가장 긴 변과 나머지 두 변의 길이를 계산합니다. for (size_t i = 0; i < sides_len; i++) { if (sides[i] > max_side) { max_side = sides[i]; } sum_of_other_sides += sides[i]; } sum_of_other_sides -= max_side; // 가장 긴 변의 길이가 나머지 두 변의 합보다 작다면 삼각형을 만들 수 있습니다. if (max_side < sum_of_other_sides) { return 1; } else { return 2; } } | cs |
#.2 정답 해석
1. 함수 정의:
int solution(int sides[], size_t sides_len)은 세 변의 길이를 받아와서 삼각형을 만들 수 있는지를 판단하는 함수이다. sides 배열은 세 변의 길이를 담고 있고, sides_len은 배열의 길이를 나타낸다.
2. 변수 선언 및 초기화:
max_side 변수는 세 변 중 가장 긴 변의 길이를 저장하고, sum_of_other_sides 변수는 나머지 두 변의 길이의 합을 저장한다.
3. 반복문을 통한 계산:
for 반복문을 사용하여 주어진 세 변의 길이를 순회하면서 가장 긴 변의 길이와 나머지 두 변의 길이의 합을 계산한다.
max_side는 반복문을 통해 각 변의 길이와 비교하여 가장 큰 값을 찾는다.
sum_of_other_sides는 모든 변의 길이를 더해나가면서 가장 긴 변의 길이는 뺀다.
4. 삼각형 판단:
계산한 가장 긴 변의 길이와 나머지 두 변의 길이의 합을 비교하여, 가장 긴 변의 길이가 나머지 두 변의 합보다 작다면 삼각형을 만들 수 있는 조건을 만족한다. 따라서 이 경우에는 함수가 1을 반환한다.
그렇지 않은 경우, 삼각형을 만들 수 없는 조건을 만족하므로 함수가 2를 반환한다.
5. 이 코드에서 사용된 개념:
- 조건문: if와 else를 사용하여 조건에 따라 코드를 실행한다.
- 배열: sides 배열은 세 변의 길이를 저장하고, 배열의 각 요소에 접근하여 처리한다.
- 반복문: for 반복문을 사용하여 배열의 요소를 처리한다.
- 변수: 변수를 사용하여 중간 결과를 저장하고 계산을 수행한다.
- 비교 연산: '>' 연산자를 사용하여 변수들의 값을 비교한다.
[3] 느낀 점
✔️ 조건문 + 반복문 + 비교 연산 을 사용하여 변수 값을 갱신하는 알고리즘을 짜는 부분이 늘 헷갈린다... 여기에 배열 개념까지 더해지니까 더 어렵게 느껴진다.
'Algorythm > 프로그래머스 스쿨 (C 언어)' 카테고리의 다른 글
[C] 프로그래머스 스쿨_1주차 과제 문제: n의 배수 (0) | 2024.03.23 |
---|---|
[C] 프로그래머스 스쿨_7주차 문제 1: 배열 원소의 길이 (0) | 2023.08.20 |
[C] 프로그래머스 스쿨_7주차 문제 2: 아이스 아메리카노 (0) | 2023.08.20 |
[C] 프로그래머스 스쿨_6주차 문제 3: 중앙값 구하기 (0) | 2023.08.11 |
[C] 프로그래머스 스쿨_6주차 문제 2: 중복된 숫자 개수 (0) | 2023.08.11 |