DP 11053관련 질문있습니다.
안녕하세요, DP 백준 11053문제관련해서 질문이 있습니다.
1) 부분수열중 가장 긴 거라했으니
N = int(input())
lit = list(map(int, input().split()))
print(len(sorted(list(set(lit)))))
이렇게 set으로 중복처리를해주고 그 길이를 구하면 안되는건가요?
2) 1) 방법이 틀려 부분수열이 아니라 기존에 input값에서 길이를 구하는걸로 구했을때 하기와 같이 했습니다.
N = int(input())
lit = list(map(int, input().split()))
dp = [0] * (N+1)
for i in range(1, N):
dp[i-1] = (lit[i] - lit[i-1])
print(sum([1 for i in dp if i>0])+1)
이전값과 비교하여 양수이면 남기고 남겨진값들로 길이를 구하려했는데
1), 2) 방법에서 둘 다 채점이 틀려서 제가 문제 자체를 이해를 잘못하고 있는지 하여 문의드립니다.
Answer 1
0
안녕하세요, tocc22님!
부분수열의 정의에 대해 혼동을 하여 발생한 문제 같습니다.
부분수열은 기존 수열에서 원래 순서를 유지한 채 일부 원소를 골라내어 만든 새로운 수열을 의미합니다.
따라서, 입력으로 주어진 수열에 대해 순서를 바꾸면 안됩니다!
질문해주신 코드에 대해 반례 테스트 케이스를 첨부하였으니 참고하시면 좋을 거 같습니다!
[1번째 코드의 반례 테스트 케이스]
7
10 20 10 30 20 50 40답은 4이며, 길이가 4인 부분 수열의 후보는 {10, 20, 30, 40} 또는 {10, 20, 30, 50} 이 있습니다.
[2번째 코드의 반례 테스트 케이스]
8
1 2 1 2 1 2 1 2답은 2이며, 길이가 2인 부분 수열의 후보는 {1, 2} 가 있습니다.
질문에 대해 만족스러운 답변이 되었기를 바랍니다!
추가로 궁금하신 점이나 더 자세한 설명이 필요하시다면 언제든지 말씀해 주세요. 😄
Iterable 관련 설명 중 의문점
1
71
1
DP 알고리즘 index 0 이유?
0
80
2
백준에서 queue.PriorityQueue() 사용 시 런타임에러가 납니다.
0
78
2
(시간 초과) BOJ 1342 관련하여 질문이 있습니다
1
79
2
BFS, DFS
0
102
2
이중연결리스트에 관한 수업 내용도 있을까요?
0
98
1
영상에서 설명이 잘못됐고 자막이 맞는 내용이라고 자막에 표기
0
110
2
최대값 int(1e6, 1e7, 1e8) 기준
0
268
2
섹션 3 BOJ 1342 //= 연산자 관련
0
87
3
라이브러리 사용
0
118
2
2번 구현 방법 질문 있습니다.
0
167
1
브루트 포스 풀이
0
144
2
다익스트라 음수 간선
0
158
1
종료 조건
0
117
2
BOJ 1342 메모리초과 관련
0
122
2
진짜 엄청나네요. 이 가격에 새로운 컨텐츠 추가라니
0
214
1
섹션3 브루트포스 알고리즘 1342 풀이1 질문
0
150
2
boj 3020
0
127
1
강의 내용 중 백트래킹 존재 여부
0
155
1
제가 공부하는 방법이 괜찮은지 궁금합니다
1
260
2
17609 투포인터 문제를 재귀로 풀 경우가 궁금합니다!
0
138
3
3020번 풀이 코드관련 질문있어요
0
171
2
재귀 관련 문제 관찰할 때 질문
0
197
1
실전 문제풀이 관련 질문
0
117
1

