[PCCE 기출문제] 2번 / 피타고라스의 정리

2024. 9. 2. 18:00PCCE 기출문제

https://school.programmers.co.kr/learn/courses/30/lessons/250132

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 설명
직각삼각형이 주어졌을 때 빗변의 제곱은 다른 두 변을 각각 제곱한 것의 합과 같습니다.

직각삼각형의 한 변의 길이를 나타내는 정수 a와 빗변의 길이를 나타내는 정수 c가 주어질 때, 다른 한 변의 길이의 제곱, b_square 을 출력하도록 한 줄을 수정해 코드를 완성해 주세요.


제한사항

  • 1 ≤ a < c ≤ 100

입출력 예
입력 #1

3

5

 

출력 #1

16

 

입력 #2

9

10


출력 #2

19

입출력 예 설명
입출력 예 #1

  • a^2 = 9, c^2 = 25 이므로 16을 출력합니다.

입출력 예 #2

  • a^2 = 81, c^2 = 100 이므로 19를 출력합니다.

디버깅(Debugging) 문제 안내

  • 디버깅(Debugging)은 이미 완성된 코드에서 버그를 찾아 수정하는 문제 타입입니다.
  • 1줄만 수정하여 버그를 고치세요.
  • 2줄 이상 수정할 경우, 실행 결과에 에러 메시지가 표시됩니다.

문제 코드

a = int(input())
c = int(input())

b_square = c - a
print(b_square)

완성된 코드의 잘못된 부분을 "1줄만" 수정하는 문제입니다. 문제 안내에서도 1줄만 수정하여 버그를 고치라는 조건이 있는 만큼, 여러 줄을 수정하면 안 됩니다.

 

이 문제는 삼각형의 세 변에서 가장 긴 변 c와 나머지 한 변 a의 길이가 주어졌을 때, 남은 한 변 b의 길이의 제곱을 구하는 문제입니다.

설명에서 언급됐듯, 피타고라스의 정리에 따라서 a^2 + b^2 = c^2 식을 사용하여, b_sqaure은 c^2 - a^2식으로 설정하도록 수정하면 됩니다.

 

정답 코드는 아래와 같습니다.

a = int(input())
c = int(input())

b_square = (c + a) * (c - a)
print(b_square)

 

저는 합차공식을 사용해서 c^2 - a^2을 (c + a) * (c - a)로 풀었습니다.

이것 말고도 제곱 기호(**)를 사용하는 방법도 있고, pow 함수를 사용해서 제곱수를 구하는 방법도 있습니다.

다양한 식을 사용할 수 있으니 어떤 방법을 사용하셔도 상관 없습니다.