코딩테스트 연습 - 체육복 | 프로그래머스 (programmers.co.kr)
이렇게 문제 풀이 구상을 한다.
#번호는 체격순. 앞번호, 뒷번호에게만 빌려줄 수 있다.
# n : 전체 학생 수
# lost : 도난당한 학생의 배열
# reserve : 여벌 있는 번호
# 전체 학생 수 2 ~ 30
# lost 1 ~ n (중복 번호 없음)
# 여벌 1 ~ n (중복 번호 없음)
# 여벌 + lost인 경우, 빌려줄 수 없음
# step 1. 제한사항 정리하기
# 2 <= n <= 30
# 1 <= len(lost) <= n
# 1 <= reserve <= n
# step 2. 그 다음은 어떻게 해야하지?
# 수업 들을 수 있는 사람 : n - lost
# for i in lost:
# lost의 앞뒤 or 본인 번호가 reserve에 있으면, answer += 1 랑 donelst.append(번호) / relst.append(reserve 번호)
# 이때 중복되면 안된다. if i in donelst or j in relst: print('error') 하기
# 헷갈리는 것 : i-1, i, i+1 셋 중에 하나가 reserve에 있어야 다음으로 넘어갈 수 있다.
# 그 다음에 셋 중 하나를 k에 할당하여 다음 작업을 해주어야 한다.
# 셋 중 하나 결정하는 걸 어떻게 하지?
왜 틀렸는지 모르겠다;;
def solution(n, lost, reserve):
m = len(lost)
r = len(reserve)
answer = n - m
donelst = []
relst = []
if 2<=n<=30 and 1<= m <= n and 1<=r<=n:
for i in lost:
if lost.count(i) == 1:
for k in range(i-1, i+2):
if k in reserve:
if reserve.count(k) == 1:
# 얘가 체육복을 빌려줄 것이다.
if i not in donelst and k not in relst:
donelst.append(i)
relst.append(k)
answer += 1
break
else:
return 'error'
else:
pass
else:
return 'error'
else:
return 'error'
return answer
print(solution(3, [3], [1]))
return answer
끙 - 왜자꾸 2개씩 틀리는지 모르겠다.
def solution(n, lost, reserve):
m = len(lost)
r = len(reserve)
answer = n - m
donelst = []
relst = []
if 2<= n<= 30 and 1<= m<=n and 1<=r<=n:
for i in lost:
if lost.count(i) == 1:
pass
else:
return 'error'
for j in reserve:
if reserve.count(j) == 1:
pass
else:
return 'error'
else:
return 'error'
for i in lost:
for k in range(i-1, i+2):
if k in reserve:
if i not in donelst and k not in relst:
donelst.append(i)
relst.append(k)
answer += 1
break
else:
pass
return answer
solution ...
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)
정답이래도 다른 사람 코드 꼭 봐야겠다
'Computer Science > 자료구조' 카테고리의 다른 글
[6.6] 프로그래머스 코딩테스트 연습 - 폰켓몬 (6/100) (0) | 2021.06.06 |
---|---|
[6.6] 프로그래머스 코딩테스트 연습 - 음양 더하기 (5/100) (0) | 2021.06.06 |
[6.6] 프로그래머스 코딩테스트 연습 - 로또 최고 순위와 최저 순위(3/100) (0) | 2021.06.06 |
[6.5] 프로그래머스 코딩테스트 연습 - K번째 수(2/100) (0) | 2021.06.05 |
[6.5] 프로그래머스 코딩테스트 연습 - 두개 뽑아서 더하기(1/100) (0) | 2021.06.05 |