문제 내용
풀이
두 정수를 A, B로 입력받고 A/B값을 출력합니다.
input(). split()로 입력받고 float형으로 형변환 시키면 쉽게 풀 수 있습니다.
a,b=input().split()
print(float(a)/float(b))
파이썬에서의 출력이 백준문제에서 요구한 대로 되었기 때문에 문제없이 넘어갈 수 있지만, 공부차원으로 절대오차와 상대오차에 대해서 학습하고, 이에 대한 코드는 무엇인지 알아봅시다.
오차의 개념은 다음과 같습니다. https://whitecode2718.tistory.com/42
" 참값 = 근삿값 + 오차 "에서 우리가 출력하는 건 근삿값이 됩니다. 즉, 1/3을 출력하면 0.333333... 의 참값을 오차를 감안하고 근삿값으로 0.333이나 0.333333으로 출력한다는 뜻입니다.
즉, "오차"가 10-9라는 이야기는 근삿값 + 0.000000001 = 참값으로 인정한다는 말이고, 이 오차 이내는 당연히 10-10이 아니라 10-8, 10-7을 포함합니다. 쉽게 생각하면 자릿수 오차를 9자리까지 허용한다는 말입니다.
예를 들면 1/3의 참값은 0.33333333...이고 근삿값을 0.333333333이면 (참값 - 근삿값 =) 오차의 오차는 0.0000000003...이고 이 오차는 10-9 보다작기에 문제의 조건을 만족합니다.
하지만 근삿값이 0.333이라면 오차는 0.000333...으로 허용 오차인 10-9보다 훨씬 크다는 것을 알 수 있습니다.
이를 통해 우리가 출력하게 될 근삿값이 9 자릿수 이상이라면 위의 10-9 오차 조건을 만족할 수 있을 거라고 생각할 수 있습니다.
여기서 오차라는 개념을 무시하고 자릿수를 그냥 9자리로 맞춰도 답은 나오지만 추천하지 않습니다.
풀이
파이썬에서 자릿수 지정 함수는 round() 함수입니다.
a,b=input().split()
print(round(float(a)/float(b),9))
round()는 excel의 함수처럼 주어진 값을 원하는 자릿수까지 반올림해 주는 함수입니다.
첫 번째 인수는 주어진 값, 두 번째 인수는 반올림할 자릿수이고 음수일 경우 10의 제곱 단위만큼 반올림합니다. 예를 들어 round(3.33333,2) = 3.33이고 round(1023,-3) = 1000, round(1923,-3) = 2000입니다.
파이썬에서는 단순히 input(). split()로 입력받고 문자열 형식을 실수형으로 형변환 해주면 쉽게 풀 수 있지만, 오차의 개념을 이해하는 게 중요한 문제입니다.
input.split()에 대한 설명은 아래링크에 있습니다.
https://whitecode2718.tistory.com/96
'프로그래밍 > 코딩 테스트 연습' 카테고리의 다른 글
[백준] 10869번 : 사칙연산 (1단계) (Python) (0) | 2024.02.14 |
---|---|
[백준] 10869번 : 사칙연산 (1단계) (C++) (1) | 2024.02.14 |
[백준] 10998번 : A * B (1단계) (Python) (0) | 2024.02.13 |
[백준] 1001번 : A - B (1단계) (Python) (0) | 2024.02.13 |
[백준] 1000번 : A + B (1단계) (Python) (0) | 2024.02.13 |