반응형
풀이
def solution(n, lost, reserve):
answer = 0
student = []
for i in range(n):
student.append(0)
for i in lost:
student[i-1] -= 1
for i in reserve:
student[i-1] += 1
for i in range(0, len(student)):
if student[i] == 1:
if i -1 >= 0:
if student[i-1] == -1:
student[i-1] += 1
student[i] -= 1
if student[i] == 1:
if i + 1 < len(student):
if student[i+1] == -1:
student[i+1] += 1
student[i] -= 1
for stu in student:
if stu >= 0:
answer += 1
return answer
실행 결과
정확성 테스트
테스트 1 〉 | 통과 (0.04ms, 10.8MB) |
테스트 2 〉 | 통과 (0.04ms, 10.7MB) |
테스트 3 〉 | 통과 (0.04ms, 10.9MB) |
테스트 4 〉 | 통과 (0.05ms, 10.8MB) |
테스트 5 〉 | 통과 (0.05ms, 10.8MB) |
테스트 6 〉 | 통과 (0.04ms, 10.8MB) |
테스트 7 〉 | 통과 (0.05ms, 10.8MB) |
테스트 8 〉 | 통과 (0.05ms, 10.7MB) |
테스트 9 〉 | 통과 (0.04ms, 10.8MB) |
테스트 10 〉 | 통과 (0.05ms, 10.8MB) |
테스트 11 〉 | 통과 (0.04ms, 10.7MB) |
테스트 12 〉 | 통과 (0.04ms, 10.7MB) |
채점 결과
정확성: 100.0
합계: 100.0 / 100.0
총평
우선은 크기에 해당하는 만큼 0으로 배열을 선언합니다. 그 이후에, 도난 당한 학생들은 해당 값에 -1을 해줍니다. 그리고 여분의 체육복을 가지고 있는 학생들은 +1을 해줍니다. 도난 당하면서, 여분의 체육복을 가지고 있는 경우의 수가 있기 떄문에 값을 바로 초기화하지 않도록 주의해야 합니다. 그다음, 여분의 체육복이 있는 경우, 먼저 앞에 학생에게 빌려줍니다. 만약 앞의 학생이 있는 경우, 뒤에 학생의 체육복 여부를 판별하고 체육복을 빌려주도록 알고리즘을 구현합니다. 배열 인덱스 에러가 나지 않도록 주의해야 했습니다. 그 후, 배열에서 -1이 아닌 경우 체육복이 있는 경우이므로, 해당 경우를 카운트 하여 값을 리턴해 문제를 해결하였습니다.
반응형
'SW > 알고리즘' 카테고리의 다른 글
파이썬 : 프로그래머스 : 가운데 글자 가져오기 : 풀이 (0) | 2019.08.31 |
---|---|
파이썬 : 프로그래머스 : 모의고사 : 풀이 (0) | 2019.08.30 |
파이썬 : 프로그래머스 : 완주하지 못한 선수 : 풀이 (0) | 2019.08.25 |
파이썬 : 프로그래머스 : 예산 : 풀이 (0) | 2019.08.24 |
파이썬 : 프로그래머스 : 기능개발 : 풀이 (0) | 2019.08.22 |