BOJ 1008 - A/B (Python3)

2022. 11. 10. 05:40Bronze/Bronze V

1008번 문제다.

이번 문제도 길게 말할 것 없이 1000번 문제, 1001번 문제와 매우 유사한 코드에 연산자만 달라지는 형태를 띈다.

왜 A×B가 없는지는 묻지 마라. 그 문제는 10998번에 들어 있다...

 

왜 갑자기 7문제나 뛰었냐고? 이 사이트는 난이도 순으로 문제가 올라오지 않는다.

1006번은 어느 정도 숙련된 사람도 풀기 버거워하는 플래티넘 III 문제가 들어 있는 등, 문제 번호는 난이도와 아무런 상관이 없다.

그럼 각설하고. 본격적으로 풀이에 돌입해 보자.


문제

두 정수 A와 B를 입력받은 다음, A/B를 출력하는 프로그램을 작성하시오.

 

입력

첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)

 

예제 입력)

# 예제 입력 1
1 3

# 예제 입력 2
4 5

 

출력

첫째 줄에 A/B를 출력한다. 실제 정답과 출력값의 절대오차 또는 상대오차가 \(10^{-9}\) 이하이면 정답이다.

 

예제 출력 1)

# 예제 출력 1
0.33333333333333333333333333333333

# 예제 출력 2
0.8

\(10^{-9}\) 이하의 오차를 허용한다는 말은 꼭 소수 9번째 자리까지만 출력하라는 뜻이 아니다.

 


내 코드

a, b = map(float, input().split())
print(a / b)

 

여기서 짚고 넘어가야 할 점이 두 가지 있다.

하나. 지금부터는 변수로 A, B 대신에 가급적 a, b를 사용할 것이다.

대문자로 시작하는 무언가는 클래스라는 고급진 구조물을 만들 때 이용한다. 그렇기에 미리 변수와 함수는 소문자로 시작하도록 할 것이다.

물론 카멜백(isPrime)처럼 대문자를 섞어 쓰기도 한다. 하지만 나는 그것도 지양한다. 언더바 스타일(is_prime)이 더 명시성이 높다.

 

그리고 둘. int 함수 대신에 a, b에 float로 자료를 저장한다.

이 문제는 1000번, 1001번 문제와 다른 점이 딱 한 가지가 있다. 결과물이 정수라는 보장이 없다는 것이다.

그렇다면 실수 자료형을 가지고 연산을 하는 것이 맞지 않을까? 해서 처음부터 실수 형식으로 가져오기 위해 float 함수를 사용하였다.

물론 굳이 안 써도 된다. 그러나 BOJ에는 정수만 만지작거리는 문제보다는 실수도 만지작거리는 문제가 더 어렵고, 재미있다.

 

그 이후는 알던 대로 코드를 작성하면 된다. 그러면 맞았습니다!!를 보게 될 것이다.

 

이로서 1008번의 풀이를 마친다.

 

그럼, 오늘도 당신의 코딩 실력이 상승하기를.

 

 

728x90

'Bronze > Bronze V' 카테고리의 다른 글

BOJ 1271 - 엄청난 부자 2 (Python3)  (0) 2022.11.11
BOJ 2438 - 별 찍기 - 1 (Python3)  (0) 2022.11.11
BOJ 2557 - Hello World (Python3)  (0) 2022.11.10
BOJ 1001 - A-B (Python3)  (0) 2022.11.10
BOJ 1000 - A+B (Python3)  (0) 2022.11.10