본문 바로가기
python

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

by Devinus 2021. 2. 27.

CodeUp 알고리즘 문제 6046번~6076번 문제의 답입니다.

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

 

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

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

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

#6046
print(int(input())<<1)
#6047
a, b = map(int, input().split())
print(a * (2 ** b))
#6048
a, b = map(int, input().split())
print(a < b)
#6049
a, b = map(int, input().split())
print(a == b)
#6050
a, b = map(int, input().split())
print(a <= b)
#6051
a, b = map(int, input().split())
print(a != b)
#6052
print(bool(int(input())))
#6053
print(not bool(int(input())))
#6054
a, b = map(int, input().split())
print(bool(a) and bool(b))
#6055
a, b = map(int, input().split())
print(bool(a) or bool(b))
#6056
a, b = map(int, input().split())
if (bool(a) != bool(b)):
    print(True)
else:
    print(False)
#6057
a, b = map(int, input().split())
if (bool(a) == bool(b)):
    print(True)
else:
    print(False)
#6058
a, b = map(int, input().split())
print(bool(a) is False and bool(b) is False)
#6059
print(~int(input()))
#6060
a, b = map(int, input().split())
print(a & b)
#6061
a, b = map(int, input().split())
print(a | b)
#6062
a, b = map(int, input().split())
print(a ^ b)
#6063
a, b = map(int, input().split())
print(a if a > b else b)
#6064
a, b, c = map(int, input().split())
print((a if a < b else b) if (a if a < b else b) < c else c)
#6065
data = input().split()
for i in data:
    if(int(i) % 2 == 0):
        print(int(i))
#6066
data = input().split()
for i in data:
    if(int(i) % 2 == 0):
        print('even')
    else:
        print('odd')
#6067
data = int(input())
if(data % 2 == 0 and data < 0):
    print('A')
elif(data % 2 != 0 and data < 0):
    print('B')
elif(data % 2 == 0 and data > 0):
    print('C')
elif(data % 2 != 0 and data > 0):
    print('D')
#6068
score = int(input())
if(score >= 90):
    print('A')
elif(score >= 70):
    print('B')
elif(score >= 40):
    print('C')
elif(score >= 0):
    print('D')
#6069
grade = input()
if(grade == 'A'):
    print('best!!!')
elif(grade == 'B'):
    print('good!!')
elif(grade == 'C'):
    print('run!')
elif(grade == 'D'):
    print('slowly~')
else:
    print('what?')
#6070
month = int(input())
season = ''
if(month in [12, 1, 2]):
    season = 'winter'
elif(month in [3, 4, 5]):
    season = 'spring'
elif(month in [6, 7, 8]):
    season = 'summer'
else:
    season = 'fall'
print(season)
#6071
i = True
while(i):
    num = int(input())
    if(num == 0):
        i = False
    else:
        print(num)
#6072
num = int(input())
while(num > 0):
    print(num)
    num -= 1
#6073
num = int(input())
while(num > 0):
    num -= 1
    print(num)
#6074
a = input()
count = 0
while(count <= ord(a)-97):
    print(chr(97+count), end=' ')
    count += 1
#6075
n = int(input())
for i in range(n + 1):
    print(i)
#6076
n = int(input())
for i in range(n + 1):
    print(i)

주목할 만한 python 문법

 

1. 값 입력받기

파이썬으로 알고리즘 문제를 해결하다 보면 사용자의 입력을 받아 원하는 값을 출력해야 하는 일이 많이 발생한다. 그래서 파이썬에서는 어떤 방법으로 값을 입력받고 입력된 값을 원하는 객체(정수형, 문자열형, 소수형)로 변환시키는지 알아보자.

 

1.1. 일반 문자열 입력받기

아래 예제 코드는 파이썬 표준 입력 input() 함수로 입력을 받는데 기본적으로 모든 값을 문자열로 반환하는 것을 보여준다.

# 문자열 입력받기
>>> word = input()
python is fun!
>>> word
'python is fun!'
>>> type(word)
<class 'str'>

# 숫자(number)를 입력받아도 문자열로 저장된다.
>>> num = input()
1024
>>> num
'1024'
>>> type(num)
<class 'str'>

# 논리값(boolean)을 입력받아도 문자열로 저장된다.
>>> bool = input()
True
>>> bool
'True'
>>> type(bool)
<class 'str'>

1.2. 값 입력받을 때 숫자로 입력받기 

1.1. 절의 예시처럼 파이썬 input()함수는 입력받을 수 있으나 모든 값을 문자열로 반환 처리하기 때문에 숫자를 입력받기 위해서는 추가적인 코드를 작성해줘야 한다. int() 함수를 이용해서 값을 int형으로 형 변환시킬 수 있다. 따라서 정수형 값을 입력받아 숫자 연산을 할 수 있는 것이다.

# 숫자 입력받기 1
>>> num = int(input())
1024
>>> num
1024
>>> type(num)
<class 'int'>

# 숫자 입력받기 2
>>> num = input()
1024
>>> num = int(num)
>>> type(num)
<class 'int'>

1.3. 값 입력받을 때 공백으로 나눠 여러 값 입력받기 

알고리즘 문제에서 값을 입력받을 때 공백으로 나눠 여러 값을 입력받아야 하는 경우가 있다. 그런 경우 map() 함수와 input().split()을 이용해서 값을 입력받는다.

>>> a, b, c, d, e = input().split()
1 2 3 4 5
>>> a
'1'
>>> b
'2'
>>> c
'3'
>>> d
'4'
>>> e
'5'
>>> a, b
('1', '2')
>>> a, b, c, d, e = map(int, input().split())
1 2 3 4 5
>>> a
1
>>> b
2
>>> c
3
>>> d
4
>>> e
5
>>> a, b
(1, 2)

위 코드가 어떻게 작동하는지 알아보기 위해 먼저 input().split()이 어떤 원리로 여러 값을 입력받게 하는지 이해해보자.

>>> num = input().split()
1 2 3 4 5
>>> num
['1', '2', '3', '4', '5']
>>> type(num)
<class 'list'>

위 코드를 보면 input()을 입력받을 때 문자열 '1 2 3 4 5'를 입력받고 바로 '1 2 3 4 5'문자열에 split() 메서드를 호출한다. split() 메서드는 문자열 객체가 갖고 있는 함수인데 문자열을 구분자(ex: '-', ' ' 등등)로 구분 지어 리스트로 반환하는 메서드이다. 

>>> num = input()
1 2 3 4 5
>>> num
'1 2 3 4 5'
>>> type(num)
<class 'str'>
>>> num = num.split()
>>> num
['1', '2', '3', '4', '5']
>>> type(num)
<class 'list'>

그리고 split() 함수는 구분자 값을 명시하지 않으면 기본값으로 공백 부분 길이가 얼마가 되든 무시하지만 split(' ')처럼 공백을 하나로 명시하면 공백이 연속으로 나올 경우 두 번째 공백부터는 공백도 리스트에 포함시켜 반환한다.

>>> 'a b  c   d'.split()
['a', 'b', 'c', 'd']
>>> 'a b  c   d'.split(' ')
['a', 'b', '', 'c', '', '', 'd']

이젠 마지막 단계인 map() 함수를 이용해서 리스트에 있는 값을 원하는 형식으로 형 변환시켜서 변수에 값을 할당한다.

# 여러 값 할당받는 코드를 순차적으로 작성
>>> num = input().split()
1 2 3 4 5
>>> a, b, c, d, e = map(int, num)
>>> a
1
>>> b
2

# 한줄 코드로 여러 값 입력받아 변수에 정수로 할당하기
>>> a, b, c = map(int, input().split())
1 2 3
>>> a
1
>>> b
2
>>> c
3

2. 삼항 연산 (a if a > b else b)

파이썬에서 삼항 연산은 if else문을 이용해 한 줄에서 참일 경우 값 if 조건 else 거짓일 경우 값처럼 가운데 조건문이 참인 경우 좌측에 있는 값을 반환하고 거짓인 경우 우측에 있는 값을 반환한다.

>>> a = 1
>>> b = 2
>>> a if a < b else b
1
>>> a if a > b else b
2

3. 반복문 for문 사용 방법

파이썬뿐만 아니라 다른 여러 프로그래밍 언어에 있는 반복문인 for문이 파이썬에서는 어떻게 사용되는지 아래 예시 코드를 보며 알아보자.

3.1. for i in range(n) - 0부터 n-1까지 반복하기(n번 반복)

>>> for i in range(10):
	print(i, end=' ')

	
0 1 2 3 4 5 6 7 8 9

3.2. for i in range(1, n) - 1부터 n-1까지 반복하기(n-1번 반복)

>>> for i in range(1, 10):
	print(i, end=' ')

	
1 2 3 4 5 6 7 8 9

3.3. for i in range(1, n + 1) - 1부터 n까지 반복하기(n번 반복)

 

>>> for i in range(1, 10 + 1):
	print(i, end=' ')

	
1 2 3 4 5 6 7 8 9 10

위 코드를 활용하여 1부터 n까지의 합을 구할 수 있다.

# 정수 n을 입력받아 1부터 n까지의 합 구하기
>>> n = int(input())
10
>>> total = 0
>>> for i in range(1, n + 1):
	total += i

	
>>> total
55

3.3. for i in (iterable variable: list, string) - 리스트나 문자열의 값을 순서대로 가져오며 반복하기

# for문을 사용해 리스트를 반복시키기
>>> li = [1, 3, 5, 7, 9]
>>> for i in li:
	print(i, end=' ')

	
1 3 5 7 9

# for문을 사용해 문자열을 반복시키기
>>> word = 'python'
>>> for i in word:
	print(i, end=' ')

	
p y t h o n

나는 현재 파이썬 알고리즘 공부를 하며 간단한 입출력 문제부터 시작해서 이제 논리 연산, 여러 값 입력받아 연산하기 등 기본적인 파이썬 문법을 익혀가는 과정에 있다. 나는 프로그래밍을 공부하면서 마음속에 항상 간직하는 말이 있는데 바로 '백견이불여일타(百見而不如一打)' 라는 말이다. '백문이불여일견 - 백번 묻는 것보다 한번 보는 게 낫다.', '백견이불여일행 - 백번 보는 것보다 한번 행동하는 게 낫다.'에서 프로그래밍 공부하는 사람의 입장에서 변형해본 말인데, '백견이불여일타 - 백번 보는 것보다 한번 코드를 직접 쳐보는 게 낫다'라는 의미로 해석하면 된다. 그래서 나는 앞으로 어떤 것을 하려 할 때 이 말을 잊지 않고 꾸준히 행한다면 결실을 맺지 않을까 하는 기대를 가지고 포기하지 않고 꾸준히 하도록 노력할 것이다.

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.26 - [Programming Language/python] - [CodeUp] Python 기초 100제 6032~6045 풀이 해설

 

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

CodeUp 알고리즘 문제 6032번~6044번 문제의 답입니다. 찾는 문제 번호를 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