이문제를 보고 자꾸 딕셔너리에 미친건지 딕셔너리만 생각이 나서딕셔너리로 문제를 해결하려고했었다
모든학생에 1을주고 도둑을맞으면 -1 여분이있으면 +1 을 해가지고문제를 해결하는 방식...
def solution(n, lost, reserve):
students={}
answer=0
for student in range(1,n+1):
students[student]=1
for losts in lost:
students[losts]-=1
for reserves in reserve:
students[reserves]+=1
for idx in range(1,n+1):
if students[idx]>1 and students.get(idx-1, -1)==0:
students[idx] -=1
students[idx-1]+=1
if students[idx]>1 and students.get(idx+1, -1)==0:
students[idx] -=1
students[idx+1]+=1
for value in students.values():
if value>0:
answer+=1
return answer
뭔가 원하는대로 구현은 됬지만 for문이 5개가 연달아있는모습은 ㅋㅋㅋㅋ 너무 지저분하다
그래서 김근혜 스승님의 도움을 받아서 스승님이 한 코드를 전수받았다
리스트를 정렬한 후에 도둑질당한사람을for문으로 돌린후에 여유분이있으면 여유분을 지우고 없으면 -1과 +1의 위치에있는사람의 여유분을 가져오고 그게아니면 전체사람수에서 -1을 빼는방식으로 해결하는거였는데 내가 너무 틀에박힌 사고를 했던거같다
'내일배움 캠프 > TIL' 카테고리의 다른 글
2023 05 10 Django 이메일 인증하기 (0) | 2023.05.10 |
---|---|
2023 05 08 TIL 팀프로젝트 시작 (0) | 2023.05.09 |
코딩테스트 신규 아이디 추천 (0) | 2023.05.03 |
코딩테스트 겹치는 선분의 길이 (0) | 2023.05.03 |
vue를 이용해서 게시글 띄우는 코드 바꾸기 (0) | 2023.05.02 |