백준 단계별로 풀어보기
단계별로 풀어보기
단계별은 @jh05013님이 관리하고 계십니다. 단계제목설명정보총 문제내가 맞은 문제1입출력과 사칙연산입력, 출력과 사칙연산을 연습해 봅시다. Hello World!112if문if문을 사용해 봅시다.53for문for문을
www.acmicpc.net
1. 입출력과 사칙연산
1008. A/B
만약 입출력 방식에 익숙하지 않으신 분들은 아래의 글을 참고 해 주세요.
C++ 기본 입출력
[C++] 기본 입출력 ( cin | cout | scanf | printf )
기본 입출력 함수 헤더 파일 #include 위의 헤더파일을 반드시 추가해야 사용 가능합니다. cin,cout 모두 std 네임스페이스 내에 존재합니다. 참고로 아래의 코드를 추가하면 std:: 를 붙이지 않고도 사
where-i-am.tistory.com
python 기본 입출력
[Python] 기본 입출력 ( input | split | map | sys.stdin.readline | print )
기본 입력 함수 input() 가장 기본적인 입력 함수입니다. 개행 문자 이전까지의 1 line을 읽어옵니다. str = input() #input : hello print(str) # output : hello 특별히 형식을 정해주지 않으면 string 형식으로..
where-i-am.tistory.com
'%' 문자를 나눗셈 연산자로 착각하기 쉬운데 키보드의 ? 키의 '/' 임을 유의하세요.
만약 파이썬으로 풀고 계시다면 이건 뭔가 더 붙어 있네... 하는 정도로 가볍게 넘어가실 수 있지만,
c++로 풀고계시다면 처음으로 약간 혼돈이 올 수 있을 것 같네요.
여기서 주목해야 할 부분은 출력값의 절대오차 혹은 상대오차가 10^-9이하여야 한다는 부분입니다.
C++
먼저, c++의 데이터 타입 및 범위가 생소하다면 아래의 문서를 참고 해 주세요.
[C++] 데이터 형식 | 크기 | 범위 ( Data type | size | range )
출처: Data Type Ranges Learn more about: Data Type Ranges docs.microsoft.com Visual Studio 2019 기준 유형 이름 크기 (byte) 기타 이름 값의 범위 int 4 signed –2,147,483,648 ~ 2,147,483,647 unsigned..
where-i-am.tistory.com
c++로 이 문제를 풀 때 자주 빠트리는 지점은 2가지입니다.
- 변수 타입을 실수형으로 사용했는지
- 여지껏 int만 주구장창 썼기 때문에 관성적으로 int를 사용할 가능성.
- 여기서는 10^-9 이하의 오차만 허용하기에, 최대 소수점 9자리만 지원하는 float를 사용하시면 안됩니다.
- 최대 소수점 15자리까지 지원하는 double 형을 사용해야 합니다.
- 소수점 표현 범위를 제대로 지정했는지
- 아래의 코드를 봅시다. 결과가 어떻게 나올까요?
#include <iostream> int main() { double a = 1; double b = 3; std::cout << a/b; }
1008번 문제의 예시처럼 0.33333333333333333.. 이 나올 거라고 생각하기 쉽지만,
결과는 0.333333 입니다. 이러면 오차가 10^-9 보다 커지게 됩니다. - 이렇게 출력되는 이유는 c++ 에서 기본적으로 소수점 출력 범위가 6자리 디폴트로 설정되어 있기 때문입니다.
- c++ 소수점 자리수 설정 코드는 아래와 같습니다.
std::cout.precision(10); //괄호 안에 출력하고 싶은 소수점 자리수를 입력합니다.
- 아래의 코드를 봅시다. 결과가 어떻게 나올까요?
최종 코드
#include <iostream>
int main(){
double a, b;
std::cin >> a >> b;
std::cout.precision(10); // 15까지 해도 됩니다. 10자리부터 정답이 나옵니다.
std::cout << a/b ;
}
Python
python의 경우에는 사실상 다 알아서 해주고 소수점 자리수도 길~게 출력 해 주기 때문에 그냥 하시면 됩니다. (..)
언젠가 다시 다루겠지만 이렇게 숫자나 문자를 다루는 문제에서는 파이썬을 활용하는 게 훨씬 간편한 경우가 많습니다. ( 코테에서 )
최종 코드
a, b = map(int,input().split())
print(a/b)
'백준 단계별' 카테고리의 다른 글
[python/c++] 백준 단계별 1. 입출력과 사칙연산 : 10869. 사칙연산 (0) | 2021.06.08 |
---|---|
[python/c++] 백준 단계별 1. 입출력과 사칙연산 : 10998. AxB (0) | 2021.05.20 |
[python/c++] 백준 단계별 1. 입출력과 사칙연산 : 1001. A-B (0) | 2021.05.20 |
[python/c++] 백준 단계별 1. 입출력과 사칙연산 : 1000. A+B (0) | 2021.05.20 |
[python/c++] 백준 단계별 1. 입출력과 사칙연산 : 10172. 개 (0) | 2021.05.01 |