반응형
풀이
- 딕셔너리를 활용해서 학생의 수에 따른 각각의 체육복을 채워주고
- 이후 여분의 체육복을 가진 학생과 잃어버린 학생의 교집합에 해당하는 학생에 대한 처리 후
- 나머지 잃어버린 학생들에 대한 처리
- 결과는 dic.values()에 있는 값 중 1을 넘어가는 값만 카운팅한 합을 출력하여 해결
def solution(n, lost, reserve):
dic = {i:1 for i in range(1,n+1)}
for i in reserve: dic[i] += 1
s_re,s_lo = set(reserve),set(lost)
for i in s_re.intersection(s_lo): dic[i] -=1
for i in s_lo-s_re:
dic[i] -= 1
if dic[i] == 0:
if dic.get(i-1) and dic[i-1] > 1: dic[i-1],dic[i] = dic[i-1]-1,1
elif dic.get(i+1) and dic[i+1] > 1: dic[i+1],dic[i] = dic[i+1]-1,1
return sum([1 if i >= 1 else 0 for i in dic.values()])
'알고리즘' 카테고리의 다른 글
[프로그래머스, 파이썬] 소수 찾기 (0) | 2024.03.07 |
---|---|
[프로그래머스, 파이썬] 뒤에 있는 큰 수 찾기 (0) | 2024.03.05 |
[프로그래머스, 파이썬] 대충 만든 자판 (1) | 2024.03.05 |
[프로그래머스, 파이썬] K번째수 (0) | 2024.03.04 |
[프로그래머스, 파이썬] 코드 처리하기 (0) | 2024.03.04 |