프로그래머스

# 두 정수 사이의 합 

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

+ Recent posts