[풀이]
* cards의 원소는 "자연수"이다.
요약: 모든 그룹의 상자 개수를 구하고 가장 큰 수와 두 번째로 큰 수를 곱하여 반환한다.
- 인덱스 순서대로 cards 배열의 원소를 확인한다. 이때, 자연수가 아닌 0인 원소는 열어본 상자로 간주한다.
- 열어본 상자가 아니라면 해당 원소값을 다음 확인할 인덱스로 정하며 해당 원소는 열어봤다는 의미로 0으로 바꾼다.
- 열어본 상자를 발견할 때까지 1~2를 반복하며 해당 작업의 수행 횟수를 저장한다.
- 열어본 상자를 발견하면 answer 변수에 이번 회차 작업 수행 횟수를 저장한다.
- 아직 안 열어본 상자에 대하여 위 작업을 반복 수행하여 모든 상자를 열어본다.
- 모든 상자를 열어본 후 answer 변수에 저장된 숫자들은 각 그룹에 속하는 원소의 개수와 동일하다.
- answer 변수의 값 중 가장 큰 수와 두 번째로 큰 수를 곱하여 반환한다.
[코드]
def solution(cards):
answer = []
for i in range(len(cards)):
tmp = 0
while cards[i]:
next_i = cards[i] - 1
cards[i], i = 0, next_i
tmp += 1
answer.append(tmp)
answer.sort()
return answer[-1] * answer[-2]
'Programming > 코딩 문제 풀이' 카테고리의 다른 글
[프로그래머스 Lv.2] H-Index (파이썬 풀이) (0) | 2022.10.28 |
---|---|
[프로그래머스 Lv.2] 카펫 (파이썬 풀이) (0) | 2022.10.26 |
[프로그래머스 Lv.2] 큰 수 만들기 (파이썬 풀이) (0) | 2022.10.25 |
[프로그래머스 Lv.2] 롤케이크 자르기 (파이썬 풀이) (0) | 2022.10.22 |
댓글