[스파르타코딩클럽]데이터분석 과정/PYTHON
[Python 코드카타] 64 ~ 66번 (프로그래머스)
doo_
2024. 1. 29. 14:25
64번 체육복
def solution(n, lost, reserve):
answer = 0
# 여벌을 가져왔지만 도난을 당한 경우
lo = set(lost)-set(reserve)
re = set(reserve)-set(lost)
# 여별을 앞 또는 뒤 친구에게 빌려주는 경우
for i in re :
if i-1 in lo:
lo.remove(i-1)
elif i+1 in lo:
lo.remove(i+1)
# n - 결국 빌리지 못한 학생수
answer = n - len(lo)
return answer
65번 문자열 나누기
def solution(s):
# 1) 기본값 세팅
answer = 0
cnt1 = 0
cnt2 = 0
for word in s :
if cnt1 == 0 : # 1) 처음 기준이 되는 word 선택
a = word
if word == a : # 2) 처음 선택된 단어 cnt1에 +1
cnt1 += 1
else: # 3) 선택된 단어와 다른 단어는 cnt2에 +1
cnt2 += 1
if cnt1 == cnt2: # 4) 그렇게 과정을 거치면서 cnt1와 cnt2가 같아지면 answer에 +1
answer += 1
# 5) 다시 초기화
cnt1 = 0
cnt2 = 0
# 6) 만약 모든 과정을 거친 다음에도 없다면 return 1
if cnt1 > 0:
answer += 1
return answer
> 좀 더 간결한 답안
def solution(s):
answer = 0
sav1=0
sav2=0
for i in s:
if sav1==sav2:
answer+=1
a=i
if i==a:
sav1+=1
else:
sav2+=1
return answer
66번 대충 만든 자판
def solution(keymap, targets):
answer = []
for target in targets : # 1) 우선 targets[] 분리해서 순서대로
click = 0
for word in target : # 2) targets안의 word들을 순서대로 확인
# 6) 처음 클릭수 비교를 위한 기본값 세팅
# 7) 만약 해당 단어가 없을 때를 위한 기본값 세팅
cnt = 101
check = False
for key in keymap : # 3) 각 word가 각 keymap에 속하는지 파악
if word in key :
cnt = min(key.index(word)+1, cnt)
# 4) 속한다면 해당 index+1을 하여 클릭수 계산
# 5) 비교문을 추가하는 대신 min(A,B)를 통해 keymap[0]과 keymap[1] 중
# 적은 클릭수 선택
check = True
# 8) 한 과정이 끝나고도 check가 false라는 건 해당 단어가 없다는 뜻
if not check :
click = -1
break
# 9) 각 word에 대한 클릭수를 더해준다.
click += cnt
# 10) 모두 더한 클릭수를 리스트에 추가
answer.append(click)
return answer