세 막대(14215번)

PearLine_Zero·2024년 4월 10일

하루에 1커밋 CodingTest

목록 보기
84/110
post-thumbnail
  • 티어 : Bronze 3
  • 정답여부 : 정답
  • 알고리즘 유형 : 수학, 구현, 기하학
  • 시간 제한 : 2초

💡문제

영선이는 길이가 a, b, c인 세 막대를 가지고 있고, 각 막대의 길이를 마음대로 줄일 수 있다.

영선이는 세 막대를 이용해서 아래 조건을 만족하는 삼각형을 만들려고 한다.

  • 각 막대의 길이는 양의 정수이다
  • 세 막대를 이용해서 넓이가 양수인 삼각형을 만들 수 있어야 한다.
  • 삼각형의 둘레를 최대로 해야 한다.
    a, b, c가 주어졌을 때, 만들 수 있는 가장 큰 둘레를 구하는 프로그램을 작성하시오.

💡입력

첫째 줄에 a, b, c (1 ≤ a, b, c ≤ 100)가 주어진다.

💡출력

첫째 줄에 만들 수 있는 가장 큰 삼각형의 둘레를 출력한다.

💡예제 입력 1

1 2 3

💡예제 출력 1

5

💡예제 입력 2

2 2 2

💡예제 출력 2

6

💡예제 입력 3

1 100 1

💡예제 출력 3

3

💡예제 입력 4

41 64 16

💡예제 출력 4

113

💡문제요약

입력한 숫자들이 삼각형 조건에 맞는지 확인하고 맞다면 삼각형 둘레의 길이를 출력하면 되는 .문제

✍️ 삼각형 조건

💡알고리즘 설계

  1. 숫자들을 입력받음
  2. 각 숫자들중 삼각형 조건이 맞는지 확인
  3. 맞으면 세 수를 다 더하여 둘레를 구함
  4. 아닌 경우 가장 길이가 긴 변의 길이를 두 변의 길이 합보다 -1하여 둘레를 구함

💡작성코드

  • python
a, b ,c = map(int, input().split())
max_number = max(a,b,c)
another_number = (a+b+c) - max(a,b,c)
if max_number < another_number:
    print(a+b+c)
elif max_number >= another_number:
    number_c = max_number - (max_number - another_number  + 1)
    print(another_number + number_c)

💡틀린 이유 or 수정할 부분

검색을 해보니 배열로 풀면 좀 더 코드를 간단하게 구현할수 있어어 한번 들고 옴

💡틀린 부분 수정 or 다른풀이

  • python
import sys; readline = sys.stdin.readline

lines = list(map(int, readline().split()))
lines.sort()
cond = lines[0] + lines[1]
if cond <= lines[2]:
print(lines[0] + lines[1] + cond - 1)
else:
print(sum(lines))


## 💡느낀점 or 기억할 정보
ㅎㅎ.. 다들 배열로 풀었구나..
profile
https://baesaa0304.tistory.com 블로그 이사합니다~

0개의 댓글