티스토리 뷰
반응형
[ 코딩 테스트 연습 ]
101. 배열의 원소 삭제하기
- 정수 배열 arr과 delete_list가 있습니다. arr의 원소 중 delete_list의 원소를 모두 삭제하고 남은 원소들은 기존의 arr에 있던 순서를 유지한 배열을 return 하는 solution 함수를 작성해 주세요.
- 제한사항 :
- 1 ≤ arr의 길이 ≤ 100
- 1 ≤ arr의 원소 ≤ 1,000
- arr의 원소는 모두 서로 다릅니다.
- 1 ≤ delete_list의 길이 ≤ 100
- 1 ≤ delete_list의 원소 ≤ 1,000
- delete_list의 원소는 모두 서로 다릅니다.
- 내가 푼 풀이
def solution(arr, delete_list):
return [i for i in arr if i not in delete_list]
print(solution([293, 1000, 395, 678, 94],[94, 777, 104, 1000, 1, 12]))
# 출력 : [293, 395, 678]
- 다른 사람의 풀이
def solution(arr, delete_list):
answer = []
for i in delete_list:
if i in arr:
arr.remove(i)
return arr
def solution(arr, delete_list):
for elem in delete_list:
if elem in arr:
arr.remove(elem)
return arr
def solution(arr, delete_list):
for d in delete_list:
tmp = []
for i in range(len(arr)):
if arr[i] != d:
tmp.append(arr[i])
arr = tmp[:]
return arr
102. 꼬리 문자열
- 문자열들이 담긴 리스트가 주어졌을 때, 모든 문자열들을 순서대로 합친 문자열을 꼬리 문자열이라고 합니다. 꼬리 문자열을 만들 때 특정 문자열을 포함한 문자열은 제외시키려고 합니다. 예를 들어 문자열 리스트 ["abc", "def", "ghi"]가 있고 문자열 "ef"를 포함한 문자열은 제외하고 꼬리 문자열을 만들면 "abcghi"가 됩니다.
- 문자열 리스트 str_list와 제외하려는 문자열 ex가 주어질 때, str_list에서 ex를 포함한 문자열을 제외하고 만든 꼬리 문자열을 return하도록 solution 함수를 완성해주세요.
- 제한사항 :
- 2 ≤ str_list의 길이 ≤ 10
- 1 ≤ str_list의 원소의 길이 ≤ 10
- 1 ≤ ex의 길이 ≤ 5
- 내가 푼 풀이
def solution(str_list, ex):
answer = ''
for i in str_list:
if ex not in i:
answer += i
return answer
print(solution(["abc", "def", "ghi"],"ef"))
# 출력 : "abcghi"
- 다른 사람의 풀이
def solution(str_list, ex):
filtered_list = [s for s in str_list if ex not in s]
return "".join(filtered_list)
def solution(str_list, ex):
return ''.join([i for i in str_list if ex not in i])
def solution(str_list, ex):
return ''.join(filter(lambda x: ex not in x, str_list))
def solution(str_list, ex):
answer = ''
for idx,val in enumerate(str_list):
if ex not in val:
answer+=val
else:
pass
return answer
103. 문자열 정수의 합
- 한 자리 정수로 이루어진 문자열 num_str이 주어질 때, 각 자리수의 합을 return하도록 solution 함수를 완성해주세요.
- 제한사항 : 3 ≤ num_str ≤ 100
- 내가 푼 풀이
def solution(num_str):
return sum( int(i) for i in num_str)
print(solution("123456789"))
# 출력 : 45
- 다른 사람의 풀이
solution=lambda s:sum(map(int,s))
def solution(num_str):
answer = 0
for i in num_str:
answer+=int(i)
return answer
def solution(num_str):
b=[]
for i in range(len(num_str)):
a = int(num_str[i])
b.append(a)
answer = sum(b)
return answer
def solution(num_str):
return sum(list(map(int, num_str)))
104. x 사이의 개수
- 문자열 myString이 주어집니다. myString을 문자 "x"를 기준으로 나눴을 때 나눠진 문자열 각각의 길이를 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.
- 제한사항 :
- 1 ≤ myString의 길이 ≤ 100,000
- myString은 알파벳 소문자로 이루어진 문자열입니다.
- 1 ≤ myString의 길이 ≤ 100,000
- 내가 푼 풀이
def solution(myString):
i = myString.split('x') # 먼저 x로 잘라준다
#['o', 'oo', 'o', '', 'o', '']
return [len(part) for part in i]
print(solution("oxooxoxxox"))
# 출력 : [1, 2, 1, 0, 1, 0]
- 다른 사람의 풀이
def solution(myString):
return [len(w) for w in myString.split('x')]
def solution(myString):
return list(map(lambda x: len(x), myString.split('x')))
105. ad 제거하기
- 문자열 배열 strArr가 주어집니다. 배열 내의 문자열 중 "ad"라는 부분 문자열을 포함하고 있는 모든 문자열을 제거하고 남은 문자열을 순서를 유지하여 배열로 return 하는 solution 함수를 완성해 주세요.
- 제한사항 :
- 1 ≤ strArr의 길이 ≤ 1,000
- 1 ≤ strArr의 원소의 길이 ≤ 20
- strArr의 원소는 알파벳 소문자로 이루어진 문자열입니다.
- 1 ≤ strArr의 길이 ≤ 1,000
- 내가 푼 풀이 (102. 꼬리 문자열 참조)
def solution(strArr, ):
answer = []
for i in strArr:
if 'ad' not in i:
answer.append(i)
return answer
print(solution(["and","notad","abcd"]))
# 출력 : ["and","abcd"]
- 다른 사람의 풀이
def solution(strArr):
return [word for word in strArr if 'ad' not in word]
def solution(strArr):
return list(filter(lambda x:'ad' not in x, strArr))
solution=lambda s:[c for c in s if 'ad'not in c]
106. 홀수 vs 짝수
- 정수 리스트 num_list가 주어집니다. 가장 첫 번째 원소를 1번 원소라고 할 때, 홀수 번째 원소들의 합과 짝수 번째 원소들의 합 중 큰 값을 return 하도록 solution 함수를 완성해주세요. 두 값이 같을 경우 그 값을 return합니다.
- 제한사항 :
- 5 ≤ num_list의 길이 ≤ 50
- -9 ≤ num_list의 원소 ≤ 9
- 내가 푼 풀이
def solution(num_list):
odd_sum = sum(num_list[::2]) # 홀수 번째 원소들의 합
even_sum = sum(num_list[1::2]) # 짝수 번째 원소들의 합
return max(odd_sum, even_sum) # 두 합 중 큰 값을 반환
print(solution([4, 2, 6, 1, 7, 6]))
# 출력 : 17
- 다른 사람의 풀이
def solution(num_list):
even = 0
odd = 0
for i in range(len(num_list)):
if i % 2 == 0:
even += num_list[i]
elif i % 2 == 1 :
odd += num_list[i]
if even > odd :
return even
else:
return odd
107. 가장 큰 수 찾기
- 정수 배열 array가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.
- 제한사항 :
- 1 ≤ array의 길이 ≤ 100
- 0 ≤ array 원소 ≤ 1,000
- array에 중복된 숫자는 없습니다.
- 내가 푼 풀이
def solution(array):
return [max(array), array.index(max(array))]
print(solution([9, 10, 11, 8]))
# 출력 : [11, 2]
- 다른 사람의 풀이
def solution(array):
return sorted([[a, i] for i, a in enumerate(array)])[::-1][0]
def solution(array):
mx = 0
ind = 0
for i, v in enumerate(array):
if v > mx:
mx = v
ind = i
return [mx, ind]
108. 0 떼기
- 정수로 이루어진 문자열 n_str이 주어질 때, n_str의 가장 왼쪽에 처음으로 등장하는 0들을 뗀 문자열을 return하도록 solution 함수를 완성해주세요.
- 제한사항 :
- 2 ≤ n_str ≤ 10
- n_str이 "0"으로만 이루어진 경우는 없습니다.
- 내가 푼 풀이
def solution(n_str):
for i in range(len(n_str)):
if n_str[i] != "0":
return n_str[i:]
print(solution("0010"))
# 출력 : "10"
- 다른 사람의 풀이
def solution(n_str):
idx = 0
while idx < len(n_str) and n_str[idx] == '0':
idx += 1
return n_str[idx:]
def solution(n_str):
return n_str.lstrip('0')
- lstrip() 함수는 문자열의 왼쪽(시작 부분)에서 특정 문자들을 제거하는 함수입니다. 여기서 'lstrip'은 'left strip'을 의미
solution=lambda x:str(int(x)) # 0만 제거하면 되니까 숫자로 0 제거
109. I 로 만들기
- 알파벳 소문자로 이루어진 문자열 myString이 주어집니다. 알파벳 순서에서 "l"보다 앞서는 모든 문자를 "l"로 바꾼 문자열을 return 하는 solution 함수를 완성해 주세요.
- 제한사항 :
- 1 ≤ myString ≤ 100,000
- myString은 알파벳 소문자로 이루어진 문자열입니다.
- 1 ≤ myString ≤ 100,000
- 내가 푼 풀이
def solution(myString):
result = ''
for i in myString:
if i < 'l':
result += 'l'
else:
result += i
return result
print(solution("abcdevwxyz"))
# 출력 : "lllllvwxyz"
- 다른 사람의 풀이
def solution(myString):
answer = [x if x > 'l' else 'l' for x in myString]
return ''.join(answer)
def solution(myString):
return myString.translate(str.maketrans('abcdefghijk', 'lllllllllll'))
110. 가까운 1 찾기
- 정수 배열 arr가 주어집니다. 이때 arr의 원소는 1 또는 0입니다. 정수 idx가 주어졌을 때, idx보다 크면서 배열의 값이 1인 가장 작은 인덱스를 찾아서 반환하는 solution 함수를 완성해 주세요.
- 단, 만약 그러한 인덱스가 없다면 -1을 반환합니다.
- 제한사항 :
- 3 ≤ arr의 길이 ≤ 100'000
- arr의 원소는 전부 1 또는 0입니다.
- 3 ≤ arr의 길이 ≤ 100'000
- 내가 푼 풀이
def solution(arr, idx):
for i in range(idx, len(arr)):
if arr[i] == 1:
return i
else: pass
return -1
print(solution([1, 1, 1, 1, 0],3))
# 출력 : 3
- 다른 사람의 풀이
def solution(arr, idx):
answer = 0
try:
answer = arr.index(1, idx)
except:
answer = -1
return answer
- try 는 실행할 코드, 만약 실행 중에 예외가 발생하면, 해당 예외는 except 블록으로 넘어가게 됩니다.
- except 블록은 예외가 발생했을 때 실행, 예외가 발생하지 않으면 except 블록은 실행되지 않습니다.
def solution(arr, idx):
answer = -1
for i in range(idx, len(arr)):
if arr[i]:
answer = i
break
return answer
반응형
'AI웹 개발자 과정 공부 (팀스파르타) > 코딩테스트 연습' 카테고리의 다른 글
24.03.27_TIL (알고리즘 예제 121-130) (0) | 2024.03.27 |
---|---|
24.03.26_TIL (알고리즘 예제 111-120) (0) | 2024.03.26 |
24.03.20_TIL (알고리즘 예제 91-100) (0) | 2024.03.20 |
24.03.19_TIL (알고리즘 예제 81-90) (0) | 2024.03.19 |
24.03.15_TIL (알고리즘 예제 71-80) (0) | 2024.03.15 |