(5) 프로그래머스 코딩테스트 Lv1 - 파이썬
by Holly Yoon17. 제일 작은 수 제거하기(문제 링크)
- 문제 설명 : 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다.
- 제한 조건 : arr은 길이 1 이상인 배열입니다. 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.
#첨에 이렇게 풀었는데 틀림
def solution(arr):
arr.sort(reverse=True)
answer = arr[:-1]
return answer if len(answer)!=0 else [-1]
- min값을 찾으려고 list의 순서를 바꿔서 뺏더니, 인덱스 조건과 맞지 않아 틀렸다.
def solution(arr):
answer = []
for i in arr:
if i != min(arr):
answer.append(i)
return answer if len(answer) != 0 else [-1]
- min(list)해줘서 최소값을 찾고, 새로운 list에 비교 후 넣어주는 형태로 풀었다. 근데 이 코드는 테스트케이스1을 통과를 못한다. 실행속도가 오래 걸려서..
#나레기의 풀이
def solution(arr):
if len(arr)==1:
return [-1]
min_val = min(arr)
return [x for x in arr if x != min_val]
- 조건 필터링을 element가 1개인 것으로 먼저해주는게 빠르다.
#남의 풀이
def rm_small(mylist):
return [i for i in mylist if i > min(mylist)]
- 부등호를 사용해서 출력해주는 방법도 있다. 아마 이건 업데이트 전 풀이인듯. 최소값을 제거해서 없을 경우, -1 출력이 없어서..
18. 음양 더하기(문제 링크)
- 문제 설명 : 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
#나의 풀이
def solution(absolutes, signs):
for i, sign in enumerate(signs):
if sign == True:
absolutes[i] = absolutes[i]
else:
absolutes[i] = (-1) * absolutes[i]
answer = sum(absolutes)
return answer
#타인의 풀이
def solution(absolutes, signs):
answer=0
for absolute,sign in zip(absolutes,signs):
if sign:
answer+=absolute
else:
answer-=absolute
return answer
- enumerate()를 사용하여 absolutes의 숫자를 변경해주고, 해당 리스트 요소의 합을 구하는 식을 만들었다.
- zip()을 사용하면 조건식이 더 간결해진다. sum이 아니라 조건식에 할당연산자를 사용해버리면 되는 것이었다..
19. 없는 숫자 더하기(문제 링크)
- 문제 설명 : 0부터 9까지의 숫자 중 일부가 들어있는 정수 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요.
#나으 풀이
def solution(numbers):
sum=0
for i in range(10):
if i not in numbers:
sum += i
return sum
#넘의 풀이
solution = lambda x: sum(range(10)) - sum(x)
- 요소를 체크하는게 아니라, 구냥 주어진 sum()을 빼버리는 방법을 생각 못했다.
20.가운데 글자 가져오기(문제 링크)
- 문제 설명 : 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.
- 제한사항 : s는 길이가 1 이상, 100이하인 스트링입니다.
#나의 풀이
def solution(s):
mid = len(s)//2
if (len(s)%2) == 0 :
answer = s[mid-1:mid+1]
else:
answer = s[mid]
return answer
#우와한 남의 풀이
def string_middle(str):
return str[(len(str)-1)//2:len(str)//2+1]
- // 연산자를 활용해서 짝, 홀수를 if문 처리하지 않아도 되게 풀 수 있다.
21.수박수박수? (문제 링크)
- 문제 설명 : 길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다. 제한 조건 n은 길이 10,000이하인 자연수입니다.
#내 풀이는 매우 돌아가서 갔다
def solution(n):
answer = []
for i in range(n):
if i%2==1:
answer.append('박')
else:
answer.append('수')
return ''.join(answer)
#간단한 남의 풀이
def water_melon(n):
s = "수박" * n
return s[:n]
#간단한 남의 풀이2
def water_melon(n):
return "수박"*(n//2) + "수"*(n%2)
- 수박수박수박..을 길게 만들어놓고 slicing을 해도 된다.
- 짝수용 '수박'을 만들고, 나머지 연산을 활용하여 붙일지 여부를 결정할 수도 있다.
'Python' 카테고리의 다른 글
(7) 프로그래머스 코딩테스트 Lv1 - 파이썬 (0) | 2023.01.08 |
---|---|
(6) 프로그래머스 코딩테스트 Lv1 - 파이썬 (0) | 2023.01.07 |
(4) 프로그래머스 코딩테스트 Lv1 - 파이썬 (0) | 2023.01.02 |
파이썬 판다스 시작하기 - 인프런 데이터리안 (0) | 2022.12.29 |
(3) 프로그래머스 코딩테스트 Lv1 - 파이썬 (0) | 2022.12.28 |
블로그의 정보
Study Log by Holly
Holly Yoon