<프로그래머스 - 체육복>
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
그리디 알고리즘 문제다!
맨 처음에 생각 없이 짰다가
앞뒤친구들에게 다 빌릴 수 있는 친구와 한명에게밖에 못 빌리는 친구와는 차등을 두어서 가장 많은 학생들이 체육복을 가져갈 수 있게해야 한다는 사실을 간과했다는 걸 깨달았다.
+도난당한 사람이 여벌을 가질 수도 있다는 걸 놓쳐서 수정
def solution(n, lost, reserve):
checklist= [ 0 for _ in range(n)] #전체 학생 수 만큼의 빈칸
result = n - len(lost) #현재 체육복 있는 사람
for cha in lost:
if cha + 1 in reserve:
checklist[cha-1] += 1 # 이 번호의 친구의 체육복 빌릴 수 있는 가능성 +1
if cha - 1 in reserve:
checklist[cha-1] += 1 # +2
if cha in reserve:
checklist[cha-1] += 1 # +2
#빌릴 가능성 높이기
for i in range(n):
if checklist[i] == 1: # 1일 때 (번호는 i+1인 상태)
if i+2 in reserve:
result += 1
reserve.remove(i+2)
elif i in reserve:
result += 1
reserve.remove(i)
elif i+1 in reserve:
result += 1
reserve.remove(i+1)
elif checklist[i] == 2: #2일 때
if i+2 in reserve:
result += 1
reserve.remove(i+2)
elif i in reserve:
result += 1
reserve.remove(i)
elif i+1 in reserve:
result += 1
reserve.remove(i+1)
elif checklist[i] == 3: #3일 때
if i+2 in reserve:
result += 1
reserve.remove(i+2)
elif i in reserve:
result += 1
reserve.remove(i)
elif i+1 in reserve:
result += 1
reserve.remove(i+1)
return result
안 된다...!
-다른 학생에게는 체육복을 빌려줄 수 없습니다.
!! 이런..
def solution(n, lost, reserve):
checklist= [ 0 for _ in range(n)] #전체 학생 수 만큼의 빈칸
result = n - len(lost) #현재 체육복 있는 사람
for cha in lost: # 자기가 체육복 안 가져온 경우
if cha in reserve:
result += 1
reserve.remove(cha)
lost.remove(cha)
for cha in lost:
if cha + 1 in reserve:
checklist[cha-1] += 1 # 이 번호의 친구의 체육복 빌릴 수 있는 가능성 +1
if cha - 1 in reserve:
checklist[cha-1] += 1 # +2
#빌릴 가능성 높이기
for i in range(n):
if checklist[i] == 1: # 1일 때 (번호는 i+1인 상태)
if i+2 in reserve:
result += 1
reserve.remove(i+2)
elif i in reserve:
result += 1
reserve.remove(i)
elif checklist[i] == 2: #2일 때
if i+2 in reserve:
result += 1
reserve.remove(i+2)
elif i in reserve:
result += 1
reserve.remove(i)
return result
안 된다..
[Python] 프로그래머스 - 체육복
- 문제 설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어
rain-bow.tistory.com
오 간결한 방법..이건 다 통과된다..
정렬해서 작은 순서대로 보니까 왼쪽 먼저 있는지만 보고 있으면 무조건 주는 방식이 통하는구나..
그래서 내 건 왜 안 되지?
dchecklist= [ 0 for _ in range(n)] #전체 학생 수 만큼의 빈칸
result = n - len(lost) #현재 체육복 있는 사람
for cha in lost: # 자기가 체육복 안 가져온 경우
if cha in reserve:
result += 1
reserve.remove(cha)
lost.remove(cha)
for cha in lost:
if cha + 1 in reserve:
checklist[cha-1] += 1 # 이 번호의 친구의 체육복 빌릴 수 있는 가능성 +1
if cha - 1 in reserve:
checklist[cha-1] += 1 # +2
#빌릴 가능성 높이기
for i in range(n):
if checklist[i] >= 1: # (번호는 i+1인 상태)
if i in reserve:
result += 1
reserve.remove(i)
elif i+2 in reserve:
result += 1
reserve.remove(i+2)
return result
하나 안 된다 하나! 7번!
def solution(n, lost, reserve):
checklist= [ 0 for _ in range(n)] #전체 학생 수 만큼의 빈칸
# 자기가 체육복 안 가져온 경우
reserve_del = set(reserve)-set(lost)
lost_del = set(lost)-set(reserve)
result = n - len(lost_del) #현재 체육복 있는 사람
for cha in lost_del:
if cha + 1 in reserve_del:
checklist[cha-1] += 1 # 이 번호의 친구의 체육복 빌릴 수 있는 가능성 +1
if cha - 1 in reserve_del:
checklist[cha-1] += 1 # +2
#빌릴 가능성 높이기
for i in range(n):
if checklist[i] >= 1: # (번호는 i+1인 상태)
if i in reserve_del:
result += 1
reserve_del.remove(i)
elif i+2 in reserve_del:
result += 1
reserve_del.remove(i+2)
return result
set을 이용한 코드 - 자신의 코드와 기능이 똑같은 것 같은- 로 바꿨더니 돌아갔다는 포스팅이 있어서 바꿨는데
얘는 테스크케이스 7이 먹힌다
성공...
대체.. 왜지..?
어디가 다른 걸까????
안 되는 테스트케이스 뭔지 공개하면 안 되나!??!? 화나네.. 휴...
그리고 이건 함수로 짜는 거라서 찍어보려면 밑에 함수 실행하는 거랑 값 넣어야 한다..
프로그래머스 문제는 다 이런 건가?
깃 사용하기
[Github] 터미널에서 GitHub Repository 연동 사용 방법: git remote, push
요즘은 IDE 자체에서 Git 을 사용할 수 있도록 지원해주는 경우가 많다. 하지만 개인적으로는 터미널에서 git을 사용하면 개발환경과 무관하게 모든 곳에서 공통적으로 사용할 수 있어서 가급적
curryyou.tistory.com
fatal: Not a valid object name: 'master'.
[Git] fatal: Not a valid object name: 'master'. 해결방법
Git Flow에 대해서 실습을 해보던 중 GitHub에 새로 만든 비어있는 repository를 컴퓨터로 git clone 명령어를 통해 clone해와서 branch를 생성하려고 하니 다음과 같은 오류를 얻었습니다. $ git branch develop..
somjang.tistory.com
github password, username 입력 자동화하기
.
medium.com

그냥 깃 자체에서 글을 올렸다
아빠가 도와좃따
이제 터미널로 하지 말고...
VSCode 깃 플러그인 설치해서 사용하기!
Visual Studio Code(VS Code) 설치방법 및 내가 쓰는 확장 플러그인
VS Code Visual Studio Code 일전에 'VS Code 유용한 단축키 사용방법'을 포스팅하면서 다음에 VS Code 유용한 확장 플러그인 포스팅도 하겠다고 약속했는데 드디어 글을 쓰게 되었습니다. 이번 포스팅은 V
www.biew.co.kr
'Club|Project > EDOC 프로그래밍 동아리 | Algorithm' 카테고리의 다른 글
✳️ 𝙴𝙳𝙾𝙲 ✳️ 2023 - 2학기 + 회장 (2) | 2023.05.31 |
---|---|
EDOC 1-2 2회차 (1) | 2022.09.21 |
Edoc 엠티 팀대항 코딩 (0) | 2022.08.24 |
EDOC 2022.08 3주차 (0) | 2022.08.16 |
EDOC 2022.08 2주차 (0) | 2022.08.09 |