문제 설명
정수를 담은 리스트mylist
를 입력받아, 이 리스트의 원소 중 짝수인 값만을 제곱해 담은 새 리스트를 리턴하는 solution함수를 완성해주세요.
제한 조건
- mylist는 길이가 100이하인 배열입니다.
- mylist의 원소는 1이상 100 이하인 정수입니다.
입출력 예
mylist output [3, 2, 6, 7] [4, 36] - 3은 홀수이므로 무시합니다. - 2는 짝수이므로 제곱합니다. - 6은 짝수이므로 제곱합니다. - 7은 홀수이므로 무시합니다. 따라서 2의 제곱과 6의 제곱을 담은 리스트인 [4, 36]을 리턴해야합니다.
mylist = [3, 2, 6, 7]
return [x**2 for x in mylist if x % 2 == 0]
파이썬의 list comprehension을 사용하여 한 줄 안에 for문과 if문을 처리할 수 있다.
문제 설명
본 문제에서는 자연수 5개가 주어집니다.
- 숫자를 차례로 곱해 나온 수가 제곱수1가 되면
found
를 출력하고- 모든 수를 곱해도 제곱수가 나오지 않았다면
not found
를 출력하는
코드를 작성해주세요.
입출력 예
input output 2 4 2 5 1 found 5 1 2 3 1 not found 예 1) - 수를 곱해나가면 2, 8, 16, 80, 80 이 나옵니다. - 16은 4를 제곱해 나온 수이므로 이 수는 제곱수입니다. - 따라서 found를 출력합니다. 예 2) - 수를 곱해나가면 5, 5, 10, 30, 30 이 나옵니다. - 이 중 어떤 수도 제곱 수가 아니므로 not found를 출력합니다.
numbers = [2, 4, 2, 5, 1]
num = 1
found = False
for n in numbers:
num *= n
if int(num**0.5)**2 == num:
print("found")
found = True
break
if not found:
print("not found")
파이썬의 for-else
문을 사용하여 코드를 줄일 수 있다.
numbers = [2, 4, 2, 5, 1]
num = 1
for n in numbers:
num *= n
if int(num**0.5)**2 == num:
print("found")
found = True
break
else:
print("not found")
파이썬에서는 값을 임시로 저장할 temp
변수를 선언하지 않고도 두 값을 바꿀 수 있다.
a = 3
b = 'abc'
a, b = b, a
파이썬의 bisect.bisect
메소드를 사용하면 이진 탐색을 쉽게 수행할 수 있다.
import bisect
mylist = [1, 2, 3, 7, 9, 11, 33]
print(bisect.bisect(mylist, 7))
#결과
4
이진 탐색(Binary Search)
오름차순으로 정렬된 리스트에서 특정한 값의 위치를 찾는 알고리즘으로 탐색 속도가 매우 빠름def bisect(a, x, lo=0, hi=None): if lo < 0: raise ValueError('lo must be non-negative') if hi is None: hi = len(a) while lo < hi: mid = (lo + hi) // 2 if a[mid] < x: lo = mid + 1 else: hi = mid return lo mylist = [1, 2, 3, 7, 9, 11, 33] print(bisect(mylist, 7))
파이썬에서는 print
문 안에서 format을 지정하는 방법 외에도, 클래스 내부에 __str__
메소드를 정의하여 출력 format을 지정할 수 있다.
class Coord(object):
def __init__ (self, x, y):
self.x, self.y = x, y
def __str__ (self):
return '({}, {})'.format(self.x, self.y)
point = Coord(1, 2)
print(point) # == print( '({}, {})'.format(coord.x, coord.y) )
파이썬에서는 inf
를 활용하여 가장 큰 값을 할당할 수 있다.
inf
는 어떤 숫자와 비교해도 무조건 크다고 판정되고, 음수 기호를 붙이는 것도 가능하다.
min_val = float('inf')
min_val = float('-inf')
파이썬에서는 with - as
구문을 활용하여 파일 입출력을 간결하게 할 수 있다.
파일을 close 하지 않아도 됨: with - as 블록이 종료되면 파일이 자동으로 close 됨
readlines가 EOF까지만 읽으므로, while 문 안에서 EOF를 체크할 필요가 없음
✔ with - as
구문은 파일 뿐만 아니라 socket이나 http 등에서도 사용할 수 있음
with open('myfile.txt') as file:
for line in file.readlines():
print(line.strip().split('\t'))
Programmers - 파이썬을 파이썬답게 https://programmers.co.kr/learn/courses/4008