문제1) split() 함수 (문자열 슬라이스)
문자열 str과 정수 n이 주어집니다.
str이 n번 반복된 문자열을 만들어 출력하는 코드를 작성해 보세요.
예시)
입력: string 5
출력: stringstringstringstringstring (string 5개)
풀이)
a, b = input().strip().split(' ') # 띄어쓰기 기준으로 문자열과 횟수를 분리
b = int(b) 횟수를 int형으로 변경
c = a # 문자열1개를 선언
for _ in range(b-1): # 횟수 -1 개를 반복 -> 첫번째 문자열을 이미 선언 했기때문에
c += a # 반복해서 같은 문자열을 붙임
print(c)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
문제2) swapcase() 함수 (문자 대소문자 변경)
영어 알파벳으로 이루어진 문자열 str이 주어집니다. 각 알파벳을 대문자는 소문자로 소문자는 대문자로 변환해서 출력하는 코드를 작성해 보세요.
예시)
입력: aBcDeFg
출력: AbCdEfG
풀이)
str = input() # 입력값 받음
print(str.swapcase()) # 대소문자를 변경하는 함수
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
문제3) 집합 사용
1부터 6까지 숫자가 적힌 주사위가 세 개 있습니다. 세 주사위를 굴렸을 때 나온 숫자를 각각 a, b, c라고 했을 때 얻는 점수는 다음과 같습니다.
세 숫자가 모두 다르다면 a + b + c 점을 얻습니다.
세 숫자 중 어느 두 숫자는 같고 나머지 다른 숫자는 다르다면 (a + b + c) × (a2 + b2 + c2 )점을 얻습니다.
세 숫자가 모두 같다면 (a + b + c) × (a2 + b2 + c2 ) × (a3 + b3 + c3 )점을 얻습니다.
세 정수 a, b, c가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.
풀이)
def solution(a, b, c):
check=len(set([a,b,c])) # 집합으로 중복검사
if check==1:
return 3*a*3*(a**2)*3*(a**3)
elif check==2:
return (a+b+c)*(a**2+b**2+c**2)
else:
return (a+b+c)
문제4) zip()함수, 딕셔너리 사용
정수 n과 문자열 control이 주어집니다. control은 "w", "a", "s", "d"의 4개의 문자로 이루어져 있으며, control의 앞에서부터 순서대로 문자에 따라 n의 값을 바꿉니다.
"w" : n이 1 커집니다.
"s" : n이 1 작아집니다.
"d" : n이 10 커집니다.
"a" : n이 10 작아집니다.
위 규칙에 따라 n을 바꿨을 때 가장 마지막에 나오는 n의 값을 return 하는 solution 함수를 완성해 주세요.
풀이)
def solution(n, control):
key = dict(zip(['w','s','d','a'], [1,-1,10,-10])) #zip으로 묶어서 사전형으로 변환
return n + sum([key[c] for c in control]) # 문자열을 반복하면서 key값에 따른 value값의 합 + 기본 n값
문제5) zip()함수, 딕셔너리 사용
정수 배열 numLog가 주어집니다. 처음에 numLog[0]에서 부터 시작해 "w", "a", "s", "d"로 이루어진 문자열을 입력으로 받아 순서대로 다음과 같은 조작을 했다고 합시다.
"w" : 수에 1을 더한다.
"s" : 수에 1을 뺀다.
"d" : 수에 10을 더한다.
"a" : 수에 10을 뺀다.
그리고 매번 조작을 할 때마다 결괏값을 기록한 정수 배열이 numLog입니다. 즉, numLog[i]는 numLog[0]로부터 총 i번의 조작을 가한 결과가 저장되어 있습니다.
주어진 정수 배열 numLog에 대해 조작을 위해 입력받은 문자열을 return 하는 solution 함수를 완성해 주세요.
예시)
입력: numLog : [0, 1, 0, 10, 0, 1, 0, 10, 0, -1, -2, -1]
결과: "wsdawsdassw"
풀이)
def solution(numLog):
answer = ''
key = dict(zip([1,-1,+10,-10],['w','s','d','a']))
for i in range(1,len(numLog)):
answer+=key[numLog[i] - numLog[i-1]]
return answer
문제6) 파이썬 함수의 특징 사용-> 리스트를 다수의 변수로 만들기
정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [i, j] 꼴입니다.
각 query마다 순서대로 arr[i]의 값과 arr[j]의 값을 서로 바꿉니다.
위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요.
예시)
arr = [0, 1, 2, 3, 4]
queries = [[0, 3],[1, 2],[1, 4]]
result = [3, 4, 1, 0, 2]
풀이)
def solution(arr, queries):
for index in range(len(queries)):
i,j = queries[index]
arr[i],arr[j] = arr[j],arr[i]
return arr
문제7) 리스트 컴프리헨션,min() 함수 사용
정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [s, e, k] 꼴입니다. 각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 k보다 크면서 가장 작은 arr[i]를 찾습니다.
각 쿼리의 순서에 맞게 답을 저장한 배열을 반환하는 solution 함수를 완성해 주세요.
단, 특정 쿼리의 답이 존재하지 않으면 -1을 저장합니다.
예시)
arr = [0, 1, 2, 4, 3]
queries = [[0, 4, 2],[0, 3, 2],[0, 2, 2]]
result = [3, 4, -1]
풀이)
def solution(arr, queries):
answer = []
for s, e, k in queries:
temp_list = [i for i in arr[s:e+1] if i > k]
answer.append(-1 if len(temp_list) == 0 else min(temp_list))
return answer
문제8) range() 함수 사용(범위)
정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [s, e, k] 꼴입니다. 각 query마다 순서대로 s ≤ i ≤ e인 모든 i에 대해 i가 k의 배수이면 arr[i]에 1을 더합니다.
위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요.
예시)
arr = [0, 1, 2, 4, 3]
queries = [[0, 4, 1],[0, 3, 2],[0, 3, 3]]
result = [3, 2, 4, 6, 4]
풀이)
def solution(arr, queries):
for query in queries:
s,e,k = query
for i in range(s,e+1):
if i % k ==0:
arr[i] += 1
return arr
문제9) all()함수 사용(iterable한 값을 반복하여 특정값에 대한 조건이 모두 일치할때 True 반환)
정수 l과 r이 주어졌을 때, l 이상 r이하의 정수 중에서 숫자 "0"과 "5"로만 이루어진 모든 정수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.
만약 그러한 정수가 없다면, -1이 담긴 배열을 return 합니다.
예시)
l = 5, r = 555 일때 결과값 : [5, 50, 55, 500, 505, 550, 555]
l = 10, r = 20 일때 결과값 : [-1]
풀이)
def solution(l, r):
answer = []
for num in range(l, r + 1):
# 숫자를 문자열로 변환
num_str = str(num)
# '0'과 '5'만 포함하는지 확인
if all(c == '0' or c == '5' for c in num_str):
answer.append(num)
if len(answer) ==0:
answer.append(-1)
return answer