파이썬 기초 100제(5)

My_Code·2023년 7월 9일

코드업

목록 보기
5/10
post-thumbnail

다음 내용은 코드업에서 공부한 내용을 복습하는 차원에서 기록한 것입니다.
출처 : https://codeup.kr/problemsetsol.php?psid=33

💻 [기초-값변환] 실수 1개 입력받아 소숫점이하 자리 변환하기

⌨️ 문제
실수 1개를 입력받아
소숫점 이하 두 번째 자리까지의 정확도로 반올림한 값을 출력해보자.

참고
format(수, ".2f") 를 사용하면 원하는 자리까지의 정확도로 반올림 된 실수 값을 만들어 준다.

여기서 만들어진 값은 소수점 아래 3번째 자리에서 반올림한 값이다.

컴퓨터 프로그래밍에서 실수 변환이나 실수를 사용하는 계산은
정확하게 변환되거나 계산되는 것이 아니라, 거의 모두 근사값으로 계산되는 것이라고 할 수 있다.

실수가 컴퓨터로 저장되기 위해서는 디지털방식으로 2진 정수화되어 저장되어야 하는데,
그 과정에서 아주 작은 부분이 저장되지 않고 사라지는 잘림(truncation) 오차가 자주 발생하기 때문이다.

👉 입력
실수 1개가 입력된다.

👉 출력
소숫점 이하 두 번째 자리까지의 정확도로 반올림한 값을 출력한다.

👉 입력 예시

3.141592

👉 출력 예시

3.14

👉 코드

a = float(input())
print(format(a, ".2f"))

💻 [기초-산술연산] 실수 2개 입력받아 나눈 결과 계산하기

⌨️ 문제
실수 2개(f1, f2)를 입력받아
f1 을 f2 로 나눈 값을 출력해보자. 이 때 소숫점 넷째자리에서 반올림하여 무조건 소숫점 셋째 자리까지 출력한다.

참고
python 언어에는 나눗셈(division)을 계산하는 연산자(/)가 있다.

컴퓨터 프로그래밍에서 실수 변환이나 실수를 사용하는 계산은
정확하게 변환되거나 계산되는 것이 아니라, 거의 모두 근사값으로 계산되는 것이라고 할 수 있다.

실수가 컴퓨터로 저장되기 위해서는 디지털방식으로 2진 정수화되어 저장되어야 하는데,
그 과정에서 아주 작은 부분이 저장되지 않고 사라지는 잘림(truncation) 오차가 자주 발생하기 때문이다.

계산 결과값 중에서 믿을 수 있는 숫자의 개수를 의미하는, 유효숫자에 대해 찾아보자.
과학실험에서 온도나 부피를 측정할 때에도 유효숫자는 중요하다.

👉 입력
2개의 실수(f1, f2)가 공백으로 구분되어 입력된다.

👉 출력
f1을 f2로 나눈 결과를 소숫점 이하 넷째 자리에서 반올림하여 소숫점 세 번째 자리까지 출력한다.

👉 입력 예시

10.0 3.0

👉 출력 예시

3.333

👉 코드

f1, f2 = input().split()
f1 = float(f1)
f2 = float(f2)
c = f1 / f2
print(format(c, ".3f"))

💻 [기초-산술연산] 정수 2개 입력받아 자동 계산하기

⌨️ 문제
정수 2개(a, b)를 입력받아 합, 차, 곱, 몫, 나머지, 나눈 값을 자동으로 계산해보자.
단, b는 0이 아니다.

👉 입력
정수 2개가 공백을 두고 입력된다.

👉 출력
첫 번째 줄에 합
두 번째 줄에 차,
세 번째 줄에 곱,
네 번째 줄에 몫,
다섯 번째 줄에 나머지,
여섯 번째 줄에 나눈 값을 순서대로 출력한다.
(실수, 소수점 이하 둘째 자리까지의 정확도로 출력)

👉 입력 예시

10 3

👉 출력 예시

13
7
30
3
1
3.33

👉 코드

a, b = input().split()
a = int(a)
b = int(b)
print(a + b)
print(a - b)
print(a * b)
print(int(a / b))
print(a % b)
print(format(a / b, ".2f"))

💻 [기초-산술연산] 정수 3개 입력받아 합과 평균 출력하기

⌨️ 문제
정수 3개를 입력받아 합과 평균을 출력해보자.

👉 입력
정수 3개가 공백을 두고 입력된다.

👉 출력
합과 평균을 공백을 두고 출력한다.
평균은 소숫점 이하 셋째 자리에서 반올림하여 둘째 자리까지 출력한다.

👉 입력 예시

1 2 3

👉 출력 예시

6 2.00

👉 코드

a, b, c = input().split()
d = int(a) + int(b) + int(c)
e = d / 3
print(d, format(e, ".2f"))

💻 [기초-비트시프트연산] 정수 1개 입력받아 2배 곱해 출력하기

⌨️ 문제
정수 1개를 입력받아 2배 곱해 출력해보자.

참고
*2 를 계산한 값을 출력해도 되지만,
정수를 2배로 곱하거나 나누어 계산해 주는 비트단위시프트연산자 <<, >>를 이용할 수 있다.
컴퓨터 내부에는 2진수 형태로 값들이 저장되기 때문에,
2진수 형태로 저장되어 있는 값들을 왼쪽(<<)이나 오른쪽(>>)으로
지정한 비트 수만큼 밀어주면 2배씩 늘어나거나 1/2로 줄어드는데,

왼쪽 비트시프트(<<)가 될 때에는 오른쪽에 0이 주어진 개수만큼 추가되고,
오른쪽 비트시프트(>>)가 될 때에는 왼쪽에 0(0 또는 양의 정수인 경우)이나 1(음의 정수인 경우)이 개수만큼 추가되고,
가장 오른쪽에 있는 1비트는 사라진다.

예시
n = 10
print(n<<1) #10을 2배 한 값인 20 이 출력된다.
print(n>>1) #10을 반으로 나눈 값인 5 가 출력된다.
print(n<<2) #10을 4배 한 값인 40 이 출력된다.
print(n>>2) #10을 반으로 나눈 후 다시 반으로 나눈 값인 2 가 출력된다.

정수 10의 2진수 표현은 ... 1010 이다.
10 << 1 을 계산하면 ... 10100 이 된다 이 값은 10진수로 20이다.
10 >> 1 을 계산하면 ... 101 이 된다. 이 값은 10진수로 5이다.

n = 10 과 같이 키보드로 입력받지 않고 직접 작성해 넣은 코드에서, 숫자로 시작하는 단어(식별자, identifier)는 자동으로 수로 인식된다.

n = 10 에서 10 은 10진수 정수 값으로 인식된다.
변수 n 에 문자열을 저장하고 싶다면, n = "10" 또는 n = '10'으로 작성해 넣으면 되고,

n = 10.0 으로 작성해 넣으면 자동으로 실수 값으로 저장된다.
n = 0o10 으로 작성해 넣으면 8진수(octal) 10으로 인식되어 10진수 8값이 저장되고,
n = 0xf 나 n = 0XF 으로 작성해 넣으면 16진수(hexadecimal) F로 인식되어 10진수 15값으로 저장된다.

** python에서 실수 값에 대한 비트시프트 연산은 허용되지 않고 오류가 발생한다.
(실수 값도 컴퓨터 내부적으로는 2진수 형태로 저장되고 비트시프트 처리가 될 수 있지만, python 에서는 허용하지 않는다.)

👉 입력
정수 한 개가 입력된다.
단, -1073741824 ~ +1073741823

👉 출력
2배 곱한 정수를 출력한다.

👉 입력 예시

1024

👉 출력 예시

2048

👉 코드

a = int(input())
print(a<<1)

💻 [기초-비트시프트연산] 2의 거듭제곱 배로 곱해 출력하기

⌨️ 문제
정수 2개(a, b)를 입력받아 a를 2b배 곱한 값으로 출력해보자.
0 <= a <= 10, 0 <= b <= 10

참고
예를 들어 1 3 이 입력되면 1을 23(8)배 하여 출력한다.

👉 입력
정수 2개(a, b)가 공백을 두고 입력된다.
0 <= a, b <= 10

👉 출력
a 를 2b배 만큼 곱한 값을 출력한다.

👉 입력 예시

1 3

👉 출력 예시

8

👉 코드

a, b = input().split()
a = int(a)
b = int(b)
print(a<<b)

profile
조금씩 정리하자!!!

0개의 댓글