1. 코딩테스트 연습 - 세 개의 구분자 | 프로그래머스 스쿨 (programmers.co.kr)
문제 설명
임의의 문자열이 주어졌을 때 문자 "a", "b", "c"를 구분자로 사용해 문자열을 나누고자 합니다.
예를 들어 주어진 문자열이 "baconlettucetomato"라면 나눠진 문자열 목록은 ["onlettu", "etom", "to"] 가 됩니다.
문자열 myStr이 주어졌을 때 위 예시와 같이 "a", "b", "c"를 사용해 나눠진 문자열을 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.
단, 두 구분자 사이에 다른 문자가 없을 경우에는 아무것도 저장하지 않으며, return할 배열이 빈 배열이라면 ["EMPTY"]를 return 합니다.
나의 풀이
.
모범 답안
def solution(myStr):
result=[]
for i in ["a", "b", "c"]:
myStr=myStr.replace(i, ' ')
result=myStr.split()
if not result:
result=["EMPTY"]
return result
a, b, c를 공백으로 대체해 공백을 기준으로 분리
2. 코딩테스트 연습 - 문자열 반복해서 출력하기 | 프로그래머스 스쿨 (programmers.co.kr)
3. 코딩테스트 연습 - 수열과 구간 쿼리 4 | 프로그래머스 스쿨 (programmers.co.kr)
나의 풀이
def solution(arr, queries):
for i in range(len(queries)):
for j in range(queries[i][0], queries[i][1]+1):
if j%queries[i][2]==0:
arr[j]+=1
return arr
풀이 참고
def solution(arr, queries):
for s, e, k in queries:
for i in range(s, e+1):
if i%k == 0:
arr[i] += 1
return arr
4. 코딩테스트 연습 - 2의 영역 | 프로그래머스 스쿨 (programmers.co.kr)
문제 설명
정수 배열 arr가 주어집니다. 배열 안의 2가 모두 포함된 가장 작은 연속된 부분 배열을 return 하는 solution 함수를 완성해 주세요.
단, arr에 2가 없는 경우 [-1]을 return 합니다
나의 풀이 (테스트 4 실패)
def solution(arr):
arr1="".join(map(str, arr))
if "2" not in arr1:
return [-1]
return arr[arr1.find("2"):arr1.rfind("2")+1]
arr를 문자열로 바꾸어 find()를 사용해 첫 번째와 마지막에 나오는 2의 인덱스 값으로 접근하려고 했으나 실패
=> 문자열로 변환시 10이상의 수에 의해 인덱스 반환값에 오류 발
모범 답안
ef solution(arr):
if 2 not in arr:
return [-1]
return arr[arr.index(2) : len(arr) - arr[::-1].index(2)]
★ 리스트 뒤에서 접근하는 법 숙지하기 list[::-1].index()
5. 코딩테스트 연습 - 문자열 묶기 | 프로그래머스 스쿨 (programmers.co.kr)
문제 설명
문자열 배열 strArr이 주어집니다. strArr의 원소들을 길이가 같은 문자열들끼리 그룹으로 묶었을 때 가장 개수가 많은 그룹의 크기를 return 하는 solution 함수를 완성해 주세요
나의 풀이 (시간초과)
def solution(strArr):
result=[]
num = [len(i) for i in strArr]
for i in num:
result.append(num.count(i))
return max(result)
모범 답안
def solution(strArr):
result=[]
num = [len(i) for i in strArr]
for i in set(num):
result.append(num.count(i))
return max(result)
def solution(strArr):
a=[0]*31
for x in strArr:
a[len(x)]+=1
return max(a)
★ set 함수 사용해 효율성 높임
6. 코딩테스트 연습 - 리스트 자르기 | 프로그래머스 스쿨 (programmers.co.kr)
7. 코딩테스트 연습 - 이진수 더하기 | 프로그래머스 스쿨 (programmers.co.kr)
문제 설명
이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요
나의 풀이
.
모범 답안
def solution(bin1, bin2):
num1=int(bin1, 2)
num2=int(bin2, 2)
result=bin(num1+num2)
return result[2:]
8. 코딩테스트 연습 - 커피 심부름 | 프로그래머스 스쿨 (programmers.co.kr)
9. 코딩테스트 연습 - qr code | 프로그래머스 스쿨 (programmers.co.kr)
10. 코딩테스트 연습 - 조건에 맞게 수열 변환하기 2 | 프로그래머스 스쿨 (programmers.co.kr)
문제 설명
정수 배열 arr가 주어집니다. arr의 각 원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나누고, 50보다 작은 홀수라면 2를 곱하고 다시 1을 더합니다.
이러한 작업을 x번 반복한 결과인 배열을 arr(x)라고 표현했을 때, arr(x) = arr(x + 1)인 x가 항상 존재합니다. 이러한 x 중 가장 작은 값을 return 하는 solution 함수를 완성해 주세요.
단, 두 배열에 대한 "="는 두 배열의 크기가 서로 같으며, 같은 인덱스의 원소가 각각 서로 같음을 의미합니다.
나의 풀이
.
모범 답안
def solution(arr):
answer = 0
old = arr
while(True):
new = []
for i in old:
if i>=50 and i%2 == 0:
i = i/2
elif i<50 and i%2 == 1:
i = i*2 + 1
new.append(i)
if old == new:
break
else:
old = new
answer += 1
return answer
'코딩테스트 > programmers (python)' 카테고리의 다른 글
20240107/ programmers/ 0단계/ python (1) | 2024.01.08 |
---|---|
int형 list에 .join()사용 시 에러 (0) | 2024.01.06 |
20240105/ programmers/ 0단계/ python (0) | 2024.01.05 |
20240104/ programmers/ 0단계/ python (3) | 2024.01.04 |
20240103/ programmers/ 0단계/ python (0) | 2024.01.03 |