본문 바로가기
python

[CodeUp] Python 기초 100제 6032~6045 풀이 해설

by Devinus 2021. 2. 26.

CodeUp 알고리즘 문제 6032번~6044번 문제의 답입니다.

찾는 문제 번호를 Ctrl + F 단축키로 검색을 하시면 더 빠르게 찾을 수 있습니다. (형식: # + 문제 번호, 예시: #6001)

 

문제의 답이 이해가 되지 않는경우 댓글을 남겨주시면 이해를 돕기 위한 답변을 달아드립니다.

제 답이 최선의 정답 코드가 아닐 수도 있습니다. 더 나은 코드가 있다면 댓글로 알려주세요.

Python 기초 100제 다른 번호 문제 풀이 확인하기

#6032
print(-int(input()))
#6033
print(chr(ord(input())+1))
#6034
a, b = input().split()
print(int(a) - int(b))
#6035
a, b = input().split()
print(float(a) * float(b))
#6036
s = input().split()
for i in range(int(s[1])):
    print(s[0], end='')
# s = input().split()
# print(s[0] * int(s[1]))
#6037
count = int(input())
s = input()
print(s * count)
#6038
a, b = input().split()
print(int(a) ** int(b))
#6039
a, b = input().split()
print(float(a) ** float(b))
#6040
a, b = input().split()
print(int(a) // int(b))
#6041
a, b = input().split()
print(int(a) % int(b))
#6042
print(round(float(input()), 2))
#6043
a, b = map(float, input().split())
print('%.3f' %round((a / b), 3))
#6044
a, b = input().split()
a = int(a)
b = int(b)
if(a >= 0 and b != 0):
    print(a + b)
    print(a - b)
    print(a * b)
    print(a // b)
    print(a % b)
    print(round((a / b), 2))
#6045
# print(a + b + c, round((a + b + c / 3), 2))
# 위 코드와 같이 작성할 경우 a + b + c / 3 부분에서 2.0값이 아닌 3.0값이 나오게 된다.
# 이 이유는 a + b + c / 3은 연산자 우선순위에 의해 a + b + (c / 3) = 1 + 2 + (3/3) = 3.0이라는 결과가 나오게 된다.
# 따라서 괄호를 적절히 사용하여 연산 우선순위를 맞춰 계산한 (a + b + c) / 3 = (1 + 2 + 3) / 3 = 2.0으로 예상한 값이 나오게 된다.
a, b, c = input().split()
a = int(a)
b = int(b)
c = int(c)
print(a + b + c, round(((a + b + c) / 3), 2))

주목할 만한 python 문법

 

1. 연산자 우선순위

파이썬에서 연산자(+, -, *, /, ....)들은 각 연산자마다 우선순위가 정해져 있다. 일반적으로 한 라인에 작성된 코드의 연산 순서는 정해진 연산자 우선순위에 의해 계산되며, 특정 연산묶음을 괄호()로 묶어 우선순위를 변경할 수 있다.

아래 코드는 위 #6045번 문제를 풀다가 발견한 예시이다.

#6045번 문제는 입력받은 세 값을 더한 값을 출력하고 공백 뒤에 세 값의 평균값을 구하는 문제이다.

#6045
# print(a + b + c, round((a + b + c / 3), 2))
# 위 코드와 같이 작성할 경우 a + b + c / 3 부분에서 2.0값이 아닌 3.0값이 나오게 된다.
# 이 이유는 a + b + c / 3은 연산자 우선순위에 의해 a + b + (c / 3) = 1 + 2 + (3/3) = 3.0이라는 결과가 나오게 된다.
# 따라서 괄호를 적절히 사용하여 연산 우선순위를 맞춰 계산한 (a + b + c) / 3 = (1 + 2 + 3) / 3 = 2.0으로 예상한 값이 나오게 된다.

>>> a = 1
>>> b = 2
>>> c = 3

>>> print(a + b + c, round((a + b + c / 3), 2))
6 4.0

>>> print(a + b + c, round(((a + b + c) / 3), 2))
6 2.0

위 예시를 보면 print(a + b + c, round((a + b + c / 3), 2))에서 a + b + c / 3은 a + b + c를 합한 값을 3으로 나눈 값인 2.0이 나올 거라고 예상했지만 결괏값은 4.0이 나왔다. 이는 연산사 우선순위에 의해 a + b + (c / 3)처럼 c / 3이 먼저 계산돼 1 + 2 + (3 / 3) = 1 + 2 + 1.0 = 4.0이라는 값이 나오게 되는것이다.

이와 같은 우선순위를 조정하기 위해 print(a + b + c, round(((a + b + c) / 3), 2))처럼 (a + b + c) / 3으로 연산들을 괄호()로 묶어서 계산해 결과를 확인해 보면 (1 + 2 + 3) / 3 = 6 / 3 = 2.0이라는 값이 나오며 문제에서 요구한 평균값을 구할 수 있다.

 

이와 같은 연산자 종류는 가령 산술 연산자인 +, -, *, / 뿐만이 아니라 대입식, 람다식, 조건식, 논리 연산자 등등 다양하게 존재하기 때문에 파이썬 공식 문서에서 정리한 각 연산자 별로 우선순위를 갖는 표가 있다.

 

※연산자 우선순위 표 (위에 있는 게 낮은 우선순위: 가장 늦게 연산됨, 아래 있는게 높은 우선순위: 가장 먼저 연산됨)

연산자

설명

:=

18 대입 표현식

lambda

17 람다 표현식

ifelse

16 조건 표현식

or

15 논리 OR

and

14 논리 AND

not x

13 논리 NOT

in, not in, is, is not, <, <=, >, >=, !=, ==

12 비교, 멤버십 검사와 아이덴티티 검사를 포함합니다

|

11 비트 OR

^

10 비트 XOR

&

9 비트 AND

<<, >>

8 시프트

+, -

7 덧셈과 뺄셈

*, @, /, //, %

6 곱셈, 행렬 곱셈, 나눗셈, 정수 나눗셈, 나머지

+x, -x, ~x

5 양, 음, 비트 NOT

**

4 거듭제곱

await x

3 어웨이트 표현식

x[index], x[index:index], x(arguments...), x.attribute

2 서브스크립션, 슬라이싱, 호출, 어트리뷰트 참조

(expressions...),

[expressions...], {key: value...}, {expressions...}

1 결합(binding) 또는 괄호 친 표현식, 리스트 디스플레이, 딕셔너리 디스플레이, 집합 디스플레이

 

알고리즘 문제 해결방법을 구현할 때마다 위와 같은 컴퓨터가 사고하는 방식과 인간이 사고하는 방식의 차이점이 존재하기 때문에 이런 예상하지 못한 값이 나오는 문제가 생기는 경우 python 공식 문서 레퍼런스를 확인하며 공부하면 보다 정확한 파이썬 문법을 배울 수 있을 것이다.

2021.02.25 - [Programming Language/python] - [CodeUp] Python 기초 100제 6001~6031 풀이 해설

 

[CodeUp] Python 기초 100제 6001~6031 풀이 해설

CodeUp 알고리즘 문제 6001번~6031번 문제의 답입니다. 찾는 문제 번호를 Ctrl + F 단축키로 검색을 하시면 더 빠르게 찾을 수 있습니다. (형식: # + 문제번호, 예시: #6001) 문제의 답이 이해가 되지 않는

devinus.tistory.com

2021.02.27 - [Programming Language/python] - [CodeUp] Python 기초 100제 6046~6076 풀이 해설

 

[CodeUp] Python 기초 100제 6046~6076 풀이 해설

CodeUp 알고리즘 문제 6046번~6076번 문제의 답입니다. 찾는 문제 번호를 Ctrl + F 단축키로 검색을 하시면 더 빠르게 찾을 수 있습니다. (형식: # + 문제 번호, 예시: #6001) 문제의 답이 이해가 되지 않

devinus.tistory.com

2021.02.28 - [Programming Language/python] - [CodeUp] Python 기초 100제 6077~6098 풀이 해설

 

[CodeUp] Python 기초 100제 6077~6098 풀이 해설

CodeUp 알고리즘 문제 6077번~6098번 문제의 답입니다. 찾는 문제 번호를 Ctrl + F 단축키로 검색을 하시면 더 빠르게 찾을 수 있습니다. (형식: # + 문제 번호, 예시: #6001) 문제의 답이 이해가 되지 않

devinus.tistory.com