티스토리 뷰
programmers.co.kr/learn/courses/30/lessons/42862
문제는 다음과 같다. 체육복을 도난당한 학생들이 있고, 여벌의 체육복을 가지고 있는 학생들이 있다.
도난당한 사람은 자기 앞사람 혹은 뒷사람이 여벌이 있어야만 빌려서 수업에 참여할수 있을때,
총 몇명이 정상적으로 수업참여가 가능한가?
def solution(n, lost, reserve):
answer = n - len(lost)
for i in range(len(lost)) :
x = lost[i]
if x - 1 in reserve :
reserve.remove(x - 1)
answer += 1
elif x + 1 in reserve :
reserve.remove(x + 1)
answer += 1
return answer
#test case 3, 7, 12 실패
처음에 생각나는 대로 짯던 코드. 체육복은 어차피 하나씩만 빌려줄 수 있고 그러면 왼쪽사람부터 빌려주면 더 빌려주거나 덜 빌려주는 경우 없이 사건을 해결할 수 있어서 탐색 순서를 굳이 바꿔줄 필요는 없었다.
answer를 총 인원수 n - 잃어버린 인원수 len(lost) 를 한뒤에 잃어버린 사람이 체육복을 찾을 때 마다 answer에 1씩 더해서 완성했지만 케이스 3개를 실패했다.
원인을 찾으려 문제를 다시 잃어보니, 도난당한 사람이 여벌을 가지고 있을 경우 자신의 체육복을 입으므로 빌리거나 빌려주지 않고 끝난다는 것이 문제였다.
lost와 reserve가 중복되는 경우가 있다는것을 생각하면 미리 중복을 제거하고 생각해야 했다.
if문을 하나 더 추가하여 if i in set_lost 로 해결하려 해보았지만 중복을 제거하지 않는이상 순서가 꼬였다.
그래서 중복제거에 효율적인 set 자료형을 이용하여 아예 중복을 배제하고 계산해주었다.
answer을 도출하는 방식도 최종적으로 도난후에 빌리지도 못한 학생들을 총 학생수에서 빼주니까 모든 케이스를 통과했다.
상관없는 이야기지만 고등학생 시절 도난사건으로 난리가 난적이 있었다. 어린 학생들이 철없이 물건들을 엄청 훔쳐대서 전교생이 조사를 받았었던 기억이 있다. 근데 생각해보니 또 군대시절에도 비슷하게 난리가 났다. 병사 한명이 지갑에 있던 돈이 사라져서 모든 부대 인원들이 쉬지도 못하고 조사를 받았던 기억이 있다.
사람들이 양심좀 가지고 살았으면 좋겠다. 특히 단체생활에서는 더욱..
'Python > python 코딩테스트' 카테고리의 다른 글
[Python] 프로그래머스 코딩테스트 조이스틱 (1) | 2020.10.08 |
---|---|
[Python] 프로그래머스 코딩테스트 큰 수 만들기 (0) | 2020.10.07 |
[Python]프로그래머스 코딩테스트 카펫 (0) | 2020.10.06 |
[Python] 프로그래머스 코딩테스트 소수찾기 (0) | 2020.10.02 |
[Python] 프로그래머스 코딩테스트 모의고사 (0) | 2020.10.01 |
- Total
- Today
- Yesterday
- JavaScript
- 배열 특정요소 제거
- Vue.js 프로젝트 투입 일주일 전
- Vue.js 책
- 프로그래머스
- 코드잇 강의
- dict 연속성
- 다리위를지나는트럭
- vue.js 개념
- 윈도우 chmod
- Vue.js강의
- 입문
- chmod 400
- Vue.js 입문
- 배열 특정객체 제거
- bootstrap5
- javascript 객체배열
- 부트스트랩 커스텀
- Python
- MySQL 문제
- Vue.js
- 코딩테스트
- 프로그래머스 코딩테스트
- vue bootstrap scss
- Java수료
- 파이썬
- 데이터 사이언스 프로그래밍 파이썬
- windows10 chmod 400
- heap max
- vue.js 특징
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |