프로그래머스
# 두 정수 사이의 합
def solution(a, b):
answer = 0
for i in range(min(a,b),max(a,b)+1):
answer += i
return answer
+ (GOOD) 다른 사람 풀이 -> sum을 생각 안했다ㅋㅋㅋ
def solution(a, b):
return sum(range(min(a,b),max(a,b)+1))
# 체육복
- 처음 내 코드
def solution(n, lost, reserve):
for i in reserve:
if i in lost:
lost.remove(i)
elif i-1 in lost:
lost.remove(i-1)
elif i+1 in lost:
lost.remove(i+1)
return n - len(lost)
- 테스트 케이스 5,7 통과 못함
- why? 여벌 체육복을 가져온 학생이 체육복을 도난당했을 수 있습니다. 이때 이 학생은 체육복을 하나만 도난당했다고 가정하며, 남은 체육복이 하나이기에 다른 학생에게는 체육복을 빌려줄 수 없습니다.
- ex) 5 [2,3,4] [1,2,3] 4 -> 2번은 2번 체육복을 써야됨 -> 중복되는건 미리 빼놓고 시작해야됨.
- 수정 후 코드
- Point. 집합 set과 차집합 사용
def solution(n, lost, reserve):
set_reserve = set(reserve) - set(lost)
set_lost = set(lost) - set(reserve)
for i in set_reserve:
if i-1 in set_lost:
set_lost.remove(i-1)
elif i+1 in set_lost:
set_lost.remove(i+1)
return n - len(set_lost)
반응형
'알고리즘 > programmers' 카테고리의 다른 글
20210315_코테공부 (0) | 2021.03.15 |
---|---|
20210312_코테공부 (0) | 2021.03.12 |
[ 프로그래머스 / 파이썬 ] 프로그래머스 LEVEL 1 풀이 (0) | 2021.03.02 |
20210225_코테공부 (0) | 2021.02.25 |
20210224_코테공부 (0) | 2021.02.24 |