알고리즘/프로그래머스
혼자 놀기의 달인 파이썬 풀이
푸딩코딩
2023. 6. 21. 16:56
728x90
반응형
https://school.programmers.co.kr/learn/courses/6/lessons/131130
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
def solution(cards):
Mval=0 #값을 갱신해가며
for i in range(len(cards)): # 8,6,3,7...카드의 값으로 나오게된다.
box=[0 for i in range (len(cards))] #카드순서대로
cnt1=0
cnt2=0
k=i
while(box[k]==0): #박스가 열리지 않았을 때,
cnt1+=1#상자1카운트+1
box[k]=1#상자를 열어준다
k=cards[k]-1 #숫자를 바꿔준다
#1박스의 수가 정해짐,
idx2=0
for j in range(len(box)):
if box[j]==0:
idx2=j
break#열리지 않은 가장 앞순번 박스를 가져옴
#2번째박스
for n in range(idx2, len(box)):
m=n
cnt2=0
while(box[m]==0): #박스가 열리지 않았을 때,
cnt2+=1#상자1카운트+1
box[m]=1#상자를 열어준다
m=cards[m]-1 #숫자를 바꿔준다
#2박스의 수가 정해짐
if cnt1*cnt2>Mval:
Mval=cnt1*cnt2
#곱을 구해 갱신
return Mval
잘 풀었다!! ><
옆에 a4용지를 두고 정리했다.
박스의 열림유무를 체크하기위해 box배열을 cards크기만큼 생성하고, 열었을 때 1을 넣어준다.
1박스/2박스 나누어서 곱해주어, Mval보다 크다면 값을 갱신해준다.
728x90
반응형