https://school.programmers.co.kr/learn/courses/30/lessons/42862#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
아이디어
본문에 아래 부분을 고려해야 한다!!!!
- 여벌 체육복을 가져온 학생이 체육복을 도난당했을 수 있습니다. 이때 이 학생은 체육복을 하나만 도난당했다고 가정하며, 남은 체육복이 하나이기에 다른 학생에게는 체육복을 빌려줄 수 없습니다.
그래서 처음에는 전체 리스트에 1을 넣어준뒤, 여벌이 있는 사람의 값을 2로 바꿔주고, 도난당한 사람은 -1을 해주었다.
그리고 검사를 진행하면 아래 반례에도 제대로 작동한다.
n = 5
lost = [1, 2]
reverse = [1, 2]
-> 결과는 5가 나와야 한다.
전체 코드
def solution(n, lost, reserve):
arr = [1] * (n + 1)
for r in reserve: arr[r] = 2
for l in lost: arr[l] -= 1
for idx, a in enumerate(arr):
if a == 0:
if idx > 1 and arr[idx-1] == 2:
arr[idx-1] -= 1
arr[idx] += 1
elif idx < n and arr[idx+1] == 2:
arr[idx+1] -= 1
arr[idx] += 1
return n - arr[1:].count(0)
'Coding Test > Python' 카테고리의 다른 글
[백준/dp] 1904번: 01타일 (실버3, python) (1) | 2024.01.28 |
---|---|
[프로그래머스] 큰 수 만들기 (level2, python) (0) | 2024.01.23 |
[LeetCode] 322. Coin Change (medium, python) (0) | 2024.01.23 |
[프로그래머스] 카펫 (level2, python) (1) | 2024.01.23 |
[프로그래머스] 소수 찾기 (level 2, Python) (1) | 2024.01.22 |