티스토리 뷰
728x90
문제
1965번: 상자넣기
정육면체 모양의 상자가 일렬로 늘어서 있다. 상자마다 크기가 주어져 있는데, 앞에 있는 상자의 크기가 뒤에 있는 상자의 크기보다 작으면, 앞에 있는 상자를 뒤에 있는 상자 안에 넣을 수가
www.acmicpc.net
풀이 및 소스코드
입력 받은 박스 크기들을 순서대로 비교해나가서 dp에 저장해주면 된다.
인덱스 i에 대해 보고 있다면,
0부터 i-1번째 까지 박스 크기와 dp값들을 비교한다.
box[i]보다 크기가 작고 dp 값이 최대라면 dp[i] 에 +1 해서 더해준다.
작은 박스가 없다면 1을 대입해주면 된다.
import sys
input = sys.stdin.readline
n = int(input())
box = list(map(int, input().split()))
dp = [0]*n
dp[0] = 1
for i in range(1, n):
max_size = dp[i]
index = i #box[i]보다 작은 크기의 상자가 있었는지 체크하는 변수
for j in range(i):
if box[j]<box[i] and max_size<dp[j]: #box[i]보다 작으면서 dp 값이 제일 큰 인덱스를 찾으려는 for문
max_size = dp[j]
index = j #작은 크기의 상자가 있었기때문에 index 값은 i가 아닌 값으로 바뀐다.
if index != i: #작은 크기의 상자가 있었으면 그 중 최댓값 + 1
dp[i] = max_size+1
else: #작은 크기의 상자가 없었다면 1대입
dp[i] = 1
print(max(dp))
반응형
'Coding - Algo > python' 카테고리의 다른 글
[백준] 1717번:집합의 표현 (python 파이썬) (0) | 2021.03.31 |
---|---|
[백준] 17144번:미세먼지 안녕! (python 파이썬) (1) | 2021.03.31 |
[백준] 1316번:그룹 단어 체커 (python 파이썬) (0) | 2021.03.26 |
[백준] 2579번:계단 오르기 (python 파이썬) (0) | 2021.03.25 |
[백준] 9184번:신나는 함수 실행 (python 파이썬) (0) | 2021.03.23 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 프로그래머스 파이썬
- 백준
- swea 1240 자바
- 프로그래머스 자바
- 1699 자바
- 타일링 자바
- 삼성청년SW아카데미
- poker swea
- SSAFY
- ubuntu
- 우분투
- swea 타일링
- 3996 자바
- 더 맵게
- 프로그래머스
- yoloV3
- 1240 자바
- 프로그래머스 더 맵게
- 백준 풀이
- 백준 dp 문제
- 백준파이썬
- swea 4070 타일링
- 파이썬
- union-find
- swea 1240
- 메뉴리뉴얼 풀이
- SWEA
- swea 타일링 자바
- 파이썬 풀이
- 백준 17144
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함