Q. 정수 n이 주어질 때, n 이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.
def solution(n):
return sum([i for i in range(2, n + 1, 2)])
Point! : 한번에 배열을 sum을 활용해 더하고 range안에 (시작, 끝, 커지는 수) 순으로 넣을 수 있는걸 잊지 말기!
Q. 정수가 담긴 배열 array와 정수 n이 매개변수로 주어질 때, array에 n이 몇 개 있는지를 return 하도록 solution함수를 완성해보세요.
def solution(array, n):
answer = array.count(n)
return answer
Point! : count()를 이용해 해당 문자가 배열 안에 몇개 있는지 셀 수 있다!
Q. 문자열 배열 strlist가 매개변수로 주어질 때 strlist 각 원소의 길이를 담은 배열을 return 하도록 solution함수를 완성해주세요.
def solution(strlist):
answer = list(map(len, strlist))
return answer
Point! : map을 사용하면 한번에 할 수 있음
문자열 원하는 만큼 추가할 때
def solution(my_string, n):
return ''.join(i*n for i in my_string)
join을 쓰면 좀 더 쉽게 할 수 있음
[표현식 for 항목 in 반복가능객체 if 조건문] 형태를 "리스트 컴프리헨션"
Q. 모음제거
def solution(my_string):
return my_string.translate({ord(letter): None for letter in 'aeiou'})
문자열.translate({ord(letter): None for letter in '삭제하고싶은알파벳들'})
ord() 를 사용해서 원하는 문자열 제거 가능
def solution(my_string):
return "".join([i for i in my_string if not(i in "aeiou")])
join을 이용한 다른 방법도 있음 ->이건 배열에 aeiou가 아닌거만 새로 넣어서 하는 방법!
Q. 숫자만 뽑아서 더하기
def solution(my_string):
return sum(int(i) for i in my_string if i.isdigit())
isdigit()을 사용해 숫자인지 판단 가능
Q. 제곱수인지 확인해서 return 하기
import math
def solution(n):
answer = 0
if math.sqrt(n).is_integer()==True :
return 1
else:
return 2
다른방법
def solution(n):
return 1 if (n ** 0.5).is_integer() else 2
Q. 가위바위보 이기기
def solution(rsp):
d = {'0':'5','2':'0','5':'2'}
return ''.join(d[i] for i in rsp)
Q. 특정 배수의 위치의 알파벳만 가져오기
def solution(cipher, code):
return cipher[code-1::code]
[code-1::code]가 뭔지 생각해보기
Q. 문자로 들어간 숫자 리스트를 최대/최솟값 순서대로 출력하기
def solution(s):
s = list(map(int,s.split()))
return str(min(s)) + " " + str(max(s))
list 와 map 사용하는거, min(), max() 사용하는거 알아두기
Q. 맨 처음만 대문자로 하고싶을 때
def Jaden_Case(s):
answer =[]
for i in range(len(s.split())):
answer.append(s.split()[i][0].upper() + s.split()[i].lower()[1:])
return " ".join(answer)
[1: ] 알아두자!
Q. 모스 부호 소문자로 치환하기
def solution(letter):
morse = {
'.-':'a','-...':'b','-.-.':'c','-..':'d','.':'e','..-.':'f',
'--.':'g','....':'h','..':'i','.---':'j','-.-':'k','.-..':'l',
'--':'m','-.':'n','---':'o','.--.':'p','--.-':'q','.-.':'r',
'...':'s','-':'t','..-':'u','...-':'v','.--':'w','-..-':'x',
'-.--':'y','--..':'z'
}
return ''.join([morse[i] for i in letter.split(' ')])
[ : ] 쓰는 방법 기억하기!!!(치환하는거)
Q. 문자열 앞뒤 뒤집어서 같은거 만들 수 있는지 비교
def solution(before, after):
answer = 0
before = sorted(before)
after = sorted(after)
if before == after:
answer = 1
return answer
sorted()를 사용해 되는지 해보기!
문자열의 경우 sort()는 안된다~
Q. 한 번만 등장한 문자
def solution(s):
return ''.join(sorted(i for i in s if s.count(i) == 1))
'한 번만' 이므로 count를 사용해 1인것만 추가하기!
Q. 이진수의 덧셈
def solution(bin1, bin2):
a = int(bin1,2)
b = int(bin2,2)
answer = bin(a+b)
return answer[2:]
answer[2: ] 이면 index위치 2부터 출력
Q. 5C2 등의 수학문제 푸는 방법 - 구슬을 나누는 경우의 수
import math
def solution(balls, share):
return math.comb(balls, share)
math 를 임포트해 comb를 사용하면 된다. 물론 for문을 사용해서 풀어도 무방함!
Q. 캐릭터의 좌표
def solution(keyinput, board):
x_lim,y_lim = board[0]//2,board[1]//2
move = {'left':(-1,0),'right':(1,0),'up':(0,1),'down':(0,-1)}
x,y = 0,0
for k in keyinput:
dx,dy = move[k]
if abs(x+dx)>x_lim or abs(y+dy)>y_lim:
continue
else:
x,y = x+dx,y+dy
return [x,y]
저
move = {'left':(-1,0),'right':(1,0),'up':(0,1),'down':(0,-1)}
이 부분을 잘 알아두자!
Q. 분모가 다른 분수의 계산 기약분수로 나타내기
import math
def solution(denum1, num1, denum2, num2):
denum = denum1 * num2 + denum2 * num1
num = num1 * num2
gcd = math.gcd(denum, num)
return [denum//gcd, num//gcd]
gcd(최대공약수)