제주코딩베이스캠프 Python 21~36제

이하연·2020년 7월 27일
0

문제21 : set은 어떻게 만드나요?
다음 중 set을 만드는 방법이 아닌 것은?
① x = {1,2,3,5,6,7}
② x = {}
③ x = set('python')
④ x = set(range(5))
⑤ x = set()

2번
이유는 print(type(x))를 하게되면 class 'dict'으로 출력되기 때문이다.

참고)
중괄호를 사용하는 것은 dictionary와 비슷하지만, key가 없습니다. 값만 존재합니다.
set은 순서가 없고 중복을 허락하지 않게 출력됨


문제22 : 배수인지 확인하기
다음 중 변수 i가 6의 배수인지 확인하는 방법으로 올바른 것은?
① i/6 == 0
② i%6 == 0
③ i&6 == 0
④ i|6 == 0
⑤ i//6 == 0

2번
나머지가 0이라면 배수이므로


문제23 : OX문제
print(10/2)의 출력 결과는 5이다.

x
5.0입니다. float형


문제24 : 대문자로 바꿔주세요
민지를 위해 이름이 입력되면 전부 대문자로 출력되는 프로그램을 만들어주세요.
입력

marry

출력

MARRY

user_input = input()
print(user_input.upper())

참고) 내장메소드를 알고 싶을때
print(dir('asdf'))


문제25 : 원의 넓이를 구하세요
반지름의 길이 x 반지름의 길이 x 3.14
입력을 반지름의 길이로 정수 n이 주어지면 원의 넓이를 반환하는 함수를 만들어 주세요
입력

7

출력

153.86

내 풀이.

user_input = int(input())
print(user_input*user_input*3.14)

선생님 풀이.

def solution(input_r):
	circle = input_r*input_r*3.14
    return circle

r = int(input())
print(solution(r))

문제26 : 행성문제2
수성,금성,지구,화성,목성,토성,천왕성,해왕성이 있습니다. 이 행성들의 영어 이름은
Mercury,Venus,Earth,Mars,Jupiter,Saturn,Uranus,Neptune입니다.
행성의 한글 이름을 입력하면 영어 이름을 반환하는 프로그램을 만들어 주세요
입력

지구

출력

Earth
user_input = input()
solar = {"수성" : 'Mercury', "금성" : 'Venus' ,"지구": 'Earth', "화성" : 'Mars' ,"목성" : 'Jupiter' ,"토성" : 'Saturn' ,"천왕성" : 'Uranus' ,"해왕성" : 'Neptune'}
print(solar[user_input])

참고)
딕셔너리 타입은 immutable한 키(key)와 mutable한 값(value)으로 맵핑되어 있는 순서가 없는 집합입니다


문제27 : 딕셔너리 만들기
첫 줄에는 학생의 이름이 공백으로 구분되어 입력되고, 두번째 줄에는 그 학생의 수학 점수가 공백으로 구분되어 주어집니다.
두 개를 합쳐 학생의 이름이 key이고 value가 수학 점수인 딕셔너리를 출력해주세요
입력

Yujin Hyewon
70 100

출력

{'Yujin' : 70 , 'Hyewon' : 100}

연습)

key = input().split(' ')
value = map(int,input().split(' '))
# 이때 value는 map형태로 되어 있기때문에 이를 다시 list로 변환해줘야됨
print(key,list(value))

답)

key = input().split(' ')
value = map(int,input().split(' '))

result = dict(zip(key,value))
print(result)

참고)

def f(n):
	return n **2
    
print(list(map(f,[2,3,4])))

결과 : [4,9,16]

이 처럼 map은 어떤 함수와 순회 가능한 객체를 맵핑해서 그것의 결과값을 출력해줌

a = [1,2,3,4]
b = [100,200,300,400]
c = ['a','b','c','d']
print(list(zip(a,b,c)))

결과 : [(1,100,'a'),(2,200,'b'),(3,300,'c'),(4,400,'d')]

문제28 : 2-gram
2-gram이란 문자열에서 2개의 연속된 요소를 출력하는 방법입니다. 예를 들어 'Python'을 2-gram으로 반복해 본다면 다음과 같은 결과가 나옵니다.

Py
yt
th
ho
on
user_input = input()
for i in range(len(user_input)-1):
	print(user_input[i]+user_input[i+1])

문제29 : 대문자만 지나가세요
알파벳 하나만을 입력하고 그 알파벳이 대문자이면 YES 아니면 NO를 출력하는 프로그램
입력

A

출력

YES

입력

d

출력

NO
user_input = input()

if ord(user_input) >= 65 and ord(user_input) <= 90 :
	print('YES')
else :
	print('NO')

참고)

  • 파이썬에서 문자열의 유니코드를 다루는 내장 메소드인 ord() , chr() 메소드
  • ord() 메소드는 하나의 유니코드 문자를 가진 문자열을 인자로 받아 문자의 유니코드 값을 정수로 반환
  • chr() 메소드는 정수형의 유니코드 값을 인자로 받아 해당 코드가 가리키는 문자를 반환한다.

문제30 : 문자열 속 문자 찾기
문자 pineapple에서 apple이라는 문자가 숨겨져 있습니다. 하연이는 이렇듯 문자열 속에 숨어있는 문자를 찾아보려고 합니다
입력으로 첫 줄에 문자열이 주어지고 둘째 줄에 찾을 문자가 주어지면 그 문자가 시작하는 index를 반환하는 프로그램을 만들어 주세요
입력

pineapple is yummy
apple

출력

4
data = input()
word = input()
print(data.find(word))

참고)

print('hello'.find('?'))
print('hello'.index('?'))

find는 찾는 문자가 없으면 -1을 리턴하고 index는 찾으려는 문자가 없으면 에러가 발생


문제31 : 다음 리스트의 내장함수의 시간 복잡도가 O(1)이 아닌 것은?
① l[i]
② l.append(5)
③ l[a:b]
④ l.pop()
⑤ l.clear()

참고) 내장함수 시간복잡도


문제32 : 문자열 만들기
원영이를 위해 문자열을 입력받으면 단어의 갯수를 출력하는 프로그램을 작성해 주세요
입력

저 넓은 세상을 네 눈앞에 그려봐 네 진심을 느껴봐

출력

9
user_input = input()
l = list(user_input.split())
print(len(l))

문제33 : 거꾸로 출력하기
한 줄에 여러개의 숫자가 입력되면, 역순으로 그 숫자들을 하나씩 출력하는 프로그램을 작성하시오.
입력

1 2 3 4 5

출력

5 4 3 2 1

입력

2 4 6 7 8

출력

8 7 6 4 2

내 풀이.

user_input = map(int, input().split(' '))
input_list = list(user_input)
for i in range(len(input_list)-1, -1, -1) :
	print(input_list[i], end=' ')

선생님 풀이.

user_input = input()
l = list(user_input.split())
l = [int(i) for i in l]
for i in range(len(l)-1, -1, -1) :
	print(l[i], end=' ')

숭인이 참고자료)

  • list.reverse()는 아무값도 반환하지 않고 list값의 순서를 뒤바꿈
  • reversed(list)는 순서가 뒤집힌 list를 반환함
  • reversed(list)의 반환형은 list가 아니므로 list(reversed(list))로 감싸 형변환을 해야함

문제34 : sort 구현하기
키가 주어지면 순서대로 제대로 섰는지 확인하는 프로그램을 작성해보자
입력

176 156 155 165 166 169

출력

NO

내 풀이.

user_input = map(int,input().split(' '))
l = list(user_input)
if l == sorted(l) : 
	print("YES")
else : 
	print("NO")

선생님 풀이.

user_input = input()
l = list(user_input.split())
l = [int(i) for i in l]
if l != sorted(l) : 
	print("NO")
else : 
	print("YES")

참고)

  • sort()
l =[1,2,3,4,5,6]
l.sort()
print(l)

결과 : [1,2,3,4,5,6,7,8]
  • sorted()
l =[1,2,3,4,5,6]
print(sorted(l))
print(l)

결과 : 
[1,2,3,4,5,6,7,8]
[1,2,3,4,7,8,5,6]

문제35 : Factory함수 사용하기
2제곱, 3제곱, 4제곱을 할 수 있는 Factory함수를 만들려고 합니다.
$에 코드를 작성하여 two함수를 완성하세요

def one(n):
	def two():
    	    <$>
    return two
a = one(2)
b = one(3)
c = one(4)
print(a(10))
print(b(10))
print(c(10))
def one(n):
	def two(value):
    	return value ** n 
    return two
a = one(2)
b = one(3)
c = one(4)
print(a(10))
print(b(10))
print(c(10))

문제36 : 구구단 출력하기
1~9까지의 숫자 중 하나를 입력하면 그 단의 구구단 결과를 한 줄에 출력하는 프로그램을 작성하세요
입력

2

출력

2 4 6 8 10 12 14 16 18

내 풀이.

user_input = int(input())
for i in range(1,10) :
	print(user_input*i, end=' ')

0개의 댓글