■ 출처
- 코딩테스트 : Python3 / 코딩 기초 트레이닝 / 모든 상태 체크 / 1~40문제
■ 연습문제
1. 문자열 출력하기
str = input()
print(str)
2. a와 b 출력하기
strip() 함수 : 특별한 문자를 제거 또는 문자열 앞뒤의 공백을 제거하는 함수
split() 함수 : 문자열을 특정 구분자를 기준으로 나누는 함수
map() 함수 : 여러 개의 데이터를 받아서 각각의 요소에 함수를 적용한 결과를 반환하는 내장 함수
- 예시, map(①적용할 함수, ②함수를 적용할 데이터 집합)
a, b = map(int, input().strip().split())
print('a =', a)
print('b =', b)
3. 문자열 반복해서 출력하기
str, n = input().split(' ')
n = int(n)
print(str * n)
4. 대소문자 바꿔서 출력하기
알파벳 대/소문자 변환
- .upper() 함수 : 소문자 → 대문자 반환하는 함수
- .lower() 함수 : 대문자 → 소문자 반환하는 함수
알파벳 대/소문자인지 여부 반환
- .isupper() 함수 : 대문자 → True 반환하는 함수
- .islower() 함수 : 소문자 → True 반환하는 함수
.join() 함수 : 매개변수로 들어온 리스트에 있는 요소들을 하나의 문자열로 합치는 함수
new_str = []
str = list(input())
for eng_text in str:
if eng_text.islower() == True :
new_str.append(eng_text.upper())
else :
new_str.append(eng_text.lower())
print(''.join(new_str))
5. 특수문자 출력하기
#print('!@#$%^&*(\\\'\"<>?:;')
print(r'!@#$%^&*(\'"<>?:;')
6. 덧셈식 출력하기
a, b = map(int, input().split(' '))
print(a, '+', b, '=', a+b)
7. 문자열 붙여서 출력하기
str1, str2 = map(str, input().strip().split(' '))
print(str1 + str2)
8. 문자열 돌리기
str = list(input())
for list_text in str:
print(list_text)
9. 홀짝 구분하기
나누셈 연산자 구분 : ①'/'은 기본적인 나눗셈, ②'//'은 나눗셈의 몫, ③%은 나눗셈의 나머지
n = int(input())
if n % 2 == 0 :
print(n, 'is even')
elif n % 2 == 1 :
print(n, 'is odd')
10. 문자열 겹쳐쓰기
def solution(my_string, overwrite_string, s):
if len(my_string[s:]) > len(overwrite_string):
answer = my_string[0:s] + overwrite_string + my_string[s+len(overwrite_string):]
else:
answer = my_string[0:s] + overwrite_string
return answer
11. 문자열 섞기
def solution(str1, str2):
answer = ''
for i in range(0, len(str1)) :
answer += str1[i] + str2[i]
return answer
12. 문자 리스트를 문자열로 변환하기
def solution(arr):
answer = ''
for i in range(0, len(arr)):
answer += arr[i]
return answer
13. 문자열 곱하기
def solution(my_string, k):
answer = ''
answer = str(my_string) * int(k)
return answer
14. 더 크게 합치기
def solution(a, b):
answer = 0
a_text = int(str(a) + str(b))
b_text = int(str(b) + str(a))
if a_text > b_text:
answer = a_text
else:
answer = b_text
return answer
15. 두 수의 연산값 비교하기
def solution(a, b):
answer = 0
a_text = int(str(a) + str(b))
b_text = 2 * int(str(b)) * int(str(a))
if a_text < b_text:
answer = b_text
else:
answer = a_text
return answer
16. n의 배수
def solution(num, n):
answer = 0
if num % n == 0:
answer = 1
else:
answer = 0
return answer
17. 공배수
논리 연산자 구분 : ①is는 '=='로 대체 가능, ②and은 '&'로 대체 가능, ③or은 '|'로 대체 가능
def solution(num, n, m):
answer = 0
if num % n == 0 and num % m == 0:
answer = 1
else:
answer = 0
return answer
18. 홀짝에 따라 다른 값 반환하기
거듭제곱 연산자 : 같은 수를 반복해서 곱하는 것을 의미하며, '**'을 사용
def solution(n):
answer = 0
if n % 2 == 1:
for i in range(n, 0, -2):
answer += i
else:
for i in range(n, 0, -2):
answer += (i**2)
return answer
19. 조건 문자열
eval() 함수 : 문자열로 받은 사칙연산 식을 실행하는 함수
'''#내 풀이
def solution(ineq, eq, n, m):
if eq == "=":
if ineq == ">":
return int(n>=m)
else:
return int(n<=m)
else:
if ineq == ">":
return int(n>m)
else:
return int(n<m)'''
def solution(ineq, eq, n, m):
return int(eval(str(n) + ineq + eq.replace('!', '') + str(m)))
20 flag에 따라 다른 값 반환하기
def solution(a, b, flag):
answer = 0
if flag == True:
answer = a+b
else:
answer = a-b
return answer
21. 코드 처리하기
def solution(code):
result = ''
mode = 0
for i in range(0, len(code)):
if mode == 0 :
if code[i] != '1' and i % 2 == 0:
result += code[i]
elif code[i] == '1':
mode = 1
else :
if code[i] != '1' and i % 2 == 1 :
result += code[i]
elif code[i] == '1':
mode = 0
if result == '':
return 'EMPTY'
return result
22. 등차수열의 특정한 항만 더하기
def solution(a, d, included):
answer = 0
for i in range(0, len(included)):
print(a, d, i, int(included[i]))
answer += (a + d * i) * int(included[i])
return answer
23. 주사위 게임 2
def solution(a, b, c):
answer = 0
if (a != b) and (a != c) and (b != c):
answer += a + b + c
elif (a == b) and (a == c) and (b == c):
answer += (a + b + c) * (a**2 + b**2 + c**2) * (a**3 + b**3 + c**3)
else:
answer += (a + b + c) * (a**2 + b**2 + c**2)
return answer
24. 원소들의 곱과 합
def solution(num_list):
add_num = 0
mul_num = 1
for i in range(0, len(num_list)):
add_num += num_list[i]
mul_num *= num_list[i]
if mul_num < add_num**2:
return 1
elif mul_num > add_num**2:
return 0
25. 이어 붙인 수
def solution(num_list):
even_list = []
odd_list = []
answer = 0
for i in range(0, len(num_list)):
if num_list[i] % 2 == 0:
even_list.append(str(num_list[i]))
else:
odd_list.append(str(num_list[i]))
answer = int(''.join(even_list)) + int(''.join(odd_list))
return answer
26. 마지막 두 원소
def solution(num_list):
num_anyting = 0
if num_list[-1] > num_list[-2]:
num_anyting = num_list[-1] - num_list[-2]
else:
num_anyting = num_list[-1] * 2
num_list.append(num_anyting)
return num_list
27. 수 조작하기 1
def solution(n, control):
for i in range(0, len(control)):
if control[i] == 'w':
n += 1
elif control[i] == 's':
n -= 1
elif control[i] == 'd':
n += 10
else:
n -= 10
return n
28. 수 조작하기 2
def solution(numLog):
answer = ''
dic = { 1: "w", -1: "s", 10: "d", -10: "a" }
for idx, val in enumerate(numLog):
if idx != len(numLog)-1: # 마지막 배열 값에서 멈추기 위한 조건문
answer += dic[numLog[idx+1] - numLog[idx]]
return answer
29. 수열과 구간 쿼리 3
def solution(arr, queries):
for i in queries:
arr[i[0]], arr[i[1]] = arr[i[1]], arr[i[0]]
return arr
30. 수열과 구간 쿼리 2
def solution(arr, queries):
result = []
for query in queries:
temp_list = []
for i in range(query[0], query[1] + 1):
if arr[i] > query[2]:
temp_list.append(arr[i])
try:
result.append(min(temp_list))
except:
result.append(-1)
return result
31. 수열과 구간 쿼리 4
def solution(arr, queries):
answer = arr
for x in range(0, len(queries)):
s = queries[x][0]
e = queries[x][1]
k = queries[x][2]
for i in range(s, e+1):
if i % k == 0:
answer[i] += 1
return answer
32. 배열 만들기 2
all() 함수 : 반복문으로 순회할 수 있는(iterable) 모든 객체를 인자 대상 참인지 여부를 확인하는 함수
def solution(l, r):
answer = []
for i in range(l, r+1):
if all(num in ['0', '5'] for num in str(i)):
answer.append(i)
if len(answer) == 0:
answer.append(-1)
return answer
33. 카운트 업
def solution(start_num, end_num):
answer = []
for i in range(start_num, end_num+1):
answer.append(i)
return answer
34. 콜라츠 수열 만들기
콜라츠 수열 : 변경된 지난 n 값들을 리스트에 기록하는 것을 의미
def solution(n):
answer = [n]
while n != 1:
if n % 2 == 0:
n = n // 2
answer.append(n)
else :
n = 3 * n + 1
answer.append(n)
return answer
35. 배열 만들기 4
def solution(arr):
stk = []
i = 0
while len(arr) > i:
if len(stk) == 0:
stk.append(arr[i])
i += 1
elif (len(stk) >= 1) and (stk[-1] < arr[i]):
stk.append(arr[i])
i += 1
elif (len(stk) >= 1) and (stk[-1] >= arr[i]):
del stk[-1]
return stk
36. 간단한 논리 연산
논리 연산자 구분 : v (합집합 - | - or), ∧ (교집합 - & - and)
def solution(x1, x2, x3, x4):
answer = (x1 or x2) and (x3 or x4)
return answer
37. 주사위 게임 3
def solution(a, b, c, d):
#인자 값으로 받는 4개의 눈금 수 리스트화
dice_list = [a, b, c, d]
#set함수를 활용한 중복값 제거
non_dup_list = list(set(dice_list))
#1.(중복 제거 결과 = 1) 4개 눈금 수가 모두 겹치는 상황 / 조건에 맞는 결과 리턴
if len(non_dup_list) == 1:
return (1111 * non_dup_list[0])
#2.(중복 제거 결과 = 2) 눈금 수가 3개 겹치거나 2개 겹치는 상황
elif len(non_dup_list) == 2:
for element in dice_list:
# 2.1.(눈금 수 3개 겹침) 중복을 재거한 리스트를 순회하고 p와 q를 조건에 맞게 할당
if dice_list.count(element) == 3:
p = element
q = [x for x in non_dup_list if x != p][0]
return ((10*p+q)**2)
# 2.2.(눈금 수 2개 겹침) 중복을 제거한 리스트를 순회하고 p와 q를 할당
elif dice_list.count(element) == 2:
p = element
q = [x for x in non_dup_list if x != p][0]
return ((p + q) * (abs(p-q)))
#3.(중복 제거 결과 = 3) 눈금 수가 2개만 겹치는 상황
elif len(non_dup_list) == 3:
for element in dice_list:
if dice_list.count(element) == 2:
new_list = [x for x in non_dup_list if x != element]
return (new_list[0] * new_list[1])
#4.(중복 제거 결과의 길이 = 4) 가장 작은 숫자 만큼의 점수를 리턴
else:
return min(dice_list)
38. 글자 이어 붙여 문자열 만들기
def solution(my_string, index_list):
answer = []
for i in range(0, len(index_list)):
some_number = int(index_list[i])
some_text = my_string[some_number]
answer.append(some_text)
return ''.join(answer)
39. 9로 나눈 나머지
나누셈 연산자 구분 : ①'/'은 기본적인 나눗셈, ②'//'은 나눗셈의 몫, ③%은 나눗셈의 나머지
def solution(number):
answer = int(number) % 9
return answer
40. 문자열 여러 번 뒤집기
문자열을 거꾸로 출력하는 명령어 : [::-1]
- 예시, s = 'abcde'
print(s[::-1]) → 'edcba'
def solution(my_string, queries):
for start, end in queries:
my_string = my_string[:start] + my_string[start:end+1][::-1] + my_string[end+1:]
return my_string