코드 발전소

[백준 문제집][Python 배우기 (1~50)][3046] R2(평균) 본문

백준 문제집/Python 배우기(1~50)

[백준 문제집][Python 배우기 (1~50)][3046] R2(평균)

FeCa 2019. 12. 24. 00:22

이 글에서 살펴볼 문제는 백준 3046번입니다.

주소는 아래와 같습니다.

https://www.acmicpc.net/problem/3046

 

3046번: R2

문제 두 숫자 R1과 R2가 있을 때, 두 수의 평균 S는 (R1+R2)/2와 같다. 상근이는 정인이 생일 선물로 두 숫자 R1과 R2를 주려고 한다. 생일 파티에서 상근이는 정인이에게 이 두 숫자를 말해주고, 정인이는 이 숫자를 받아 적는다. 그리고 나서 기쁜 마음으로 1년동안 이 숫자를 외우면서 산다. 상근이는 R1과 R2를 엄청난 고민 끝에 정했다. 작년에는 R1과 R2를 까먹어서 아무 숫자나 정해서 주었기 때문에, 올해는 까먹지 않기 위해서 평균

www.acmicpc.net

automata님의 문제집, "Python 배우기 (1~50)"의 10번 문제입니다.

 

 1. 문제 이해                                                                   

 

해당 문제는 다음과 같습니다.

 

문제가 생각보다 깁니다만,

잠시 문제를 살펴보면,

"사칙연산을 이용해 평균을 구하는 방정식을 완성하는 문제"임을 알 수 있습니다.

문제의 시간 제한, 메모리 제한은 다음과 같습니다.

문제의 입력과 출력 조건은 다음과 같습니다.

 

문제에서 제시된 예제 입출력은 다음과 같습니다.

 

 

 

 2. 어떻게 해결할 것인가?                                                  

 

문제가 길었지만, 사실 별 내용은 없었습니다.

문제를 간단하게 요약하자면, 두 정수(자연수)의 평균을 구하는 방정식을 완성하는 문제입니다.

 

두 정수의 평균을 구하는 방법은 모두들 아실테니,

이를 바로 수식으로 옮겨보겠습니다.

 

두 정수 int1int2를 2로 나눈 값이 mean, 즉 두 수의 평균이라는 것은 모두들 알고 계실겁니다.​

문제의 핵심은, int1의 값과 mean의 값을 아는 상태에서 int2를 구하는 프로그램을 작성하는 것입니다.

 

따라서 위의 수식을 int1int2에 대한 식에서, int1mean에 대한 식으로 바꾸면,

int2를 구하는 방정식을 세울 수 있게 됩니다.

 

int2를 구하는 방정식은 다음과 같습니다.

너무 쉬운 과정이니, 과정은 생략했습니다.

이제 int2를 구할 수 있으니, 입력을 어떻게 받을지와 출력을 어떻게 할지만 선택하면 됩니다.

 

예제 입출력을 보면,

입력은 공백을 기준으로 두 정수를 받아주어야 하므로, input().split() 함수를 사용하면 될 것이고

출력은 print() 함수의 괄호 안에 위에서 구한 int2를 구하는 방정식을 넣어주기만 하면 되겠습니다.

 

 

 3. 문제 해결                                                                  

 

​우선, input().split() 함수를 이용해 첫 번째 정수와 평균을 다음과 같이 받아줍시다.

1
int1, mean = input().split()

 

위와 같이 변수 int1의 값과 변수 mean의 값을 받게 되면, 받은 값은 정수가 아니라 문자열의 형태이므로,

이를 다시 정수 형태로 바꿔줄 필요가 있습니다.

다음과 같이 바꾸어주면 되겠네요.

1
2
int1 = int(int1)
mean = int(mean)

 

이제 print() 함수를 이용해서 앞서 구한 방정식의 결과를 출력해주기만 하면 됩니다.

다음과 같이 출력하면 되겠습니다.

1
print(2 * mean - int1)

 

따라서, 전체 코드는 다음과 같습니다.

1
2
3
4
5
6
int1, mean = input().split()
 
int1 = int(int1)
mean = int(mean)
 
print(2 * mean - int1)

 

 

 

 4. 코드 제출 및 결과                                                        

 

해당 코드가 정답임을 확인할 수 있습니다.

 

 

 

 5. 문제의 정답 비율                                                         

 

정답 비율은 매우 높은 85.355% 입니다.

 

 

 

 

 6. 다른 정답자들과의 코드 비교                                          

 

정답자들의 코드는 대부분 비슷하거나 동일하므로 생략합니다.

오답자들의 코드도 대부분 방정식이나, meanint1의 입력 위치를 바꾸는 등의 실수이고

정답 비율이 높아 코드를 찾기 어려워 생략합니다.

 

 

 7. 결론                                                                         

 7. 결론                                                                     

긴 글 읽어주신 여러분들께 진심으로 감사드립니다.

좋은 날 되세요.