반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 개발자
- 프로그래머스 #카카오 #IT #코딩테스트
- 운영체제
- 스프링
- DPDK
- 백엔드
- 프로그래머스
- Python
- 파이썬
- programmers
- IT
- 코딩테스트
- Linux
- Kakao
- C
- 네트워크
- 쿠버네티스
- 리눅스
- 스프링부트
- Java
- 캐시
- 엘라스틱서치
- 카카오
- 자바
- Spring
- Elasticsearch
- 알고리즘
- 도커
- springboot
- docker
Archives
- Today
- Total
저고데
[프로그래머스]혼자 놀기의 달인 본문
728x90
반응형
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/131130
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드를 작성하기 위한 순서는 다음과 같다.
1. 박스를 열었는지 판단하기 위해서 check 리스트를 만들어준다.
2. for문과 while문을 사용하여 연 박스를 만났다면 반목문을 종료하고 박스의 갯수를 append한다.
def solution(cards):
answer = 0
check = [0 for _ in range(len(cards))] #1번 : 열였다면 1, 연 적이 없다면 0
total = []
for index, card in enumerate(cards):
if check[index] == 0:
count = 1
check[index] = 1
index = card-1
while True:
if check[index] == 0:
count += 1
check[index] = 1
index = cards[index]-1
else:
break
total.append(count)
total.sort(reverse = True)
if len(total) <= 1: #배열의 길이가 1이하일 때를 따로 구분해야 런타임에러가 발생하지 않는다.
return 0
else:
return total[0]*total[1]
코드를 작성하는 것보다 문제를 해석하는 데 시간이 많이 걸렸던 문제이다.
enumerate를 사용하여 배열의 인덱스 값을 보다 편안하게 사용하였고, 상자의 개봉 여부를 나타나는 배열을 새로 만들어주는 것이 문제의 핵심이었다.
728x90
반응형
'프로그래머스' 카테고리의 다른 글
[프로그래머스]표 편집 (0) | 2023.02.14 |
---|---|
[프로그래머스]마법의 엘리베이터 (0) | 2023.02.14 |
[프로그래머스]스티커 모으기(2) (0) | 2023.02.14 |
[프로그래머스]기지국 설치 (0) | 2023.02.12 |
[프로그래머스]여행 경로 (0) | 2023.02.12 |