inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Từ A đến Z về kỳ thi lập trình thi đấu được chia sẻ bởi người từng tham dự giải thế giới (với Python)

Tổng hợp sơ lược phần 'Thuật toán thiết yếu 2'

2133번 문제풀이 관련 질문

Đã giải quyết

102

purplejay

5 câu hỏi đã được viết

1

안녕하세요 선생님. 이전 두 질문에 대한 답변이 많은 도움이 되었습니다. 감사합니다.

2133번 문제의 DP 1번 풀이에서 O(N^2) 풀이를 소개해주셨는데 아래와 같이 dp 테이블을 갱신할 때 sum_dp 테이블을 같이 갱신을 해주면 시간복잡도가 O(N)으로 줄일 수 있지 않나 싶어 질문드립니다.

N = int(input())

if N % 2 != 0:
    print(0)
else:
    n = N//2
    dp = [1] * (n+1)
    sum_dp = [1] * (n+1)
    for i in range(1,n+1):
        dp[i] = sum_dp[i-1] * 2 + dp[i-1]
        sum_dp[i] = sum_dp[i-1] + dp[i]
    print(dp[-1])

그리고 이건 다른 종류의 질문인데 혹시 그래프 부분이 실제로 코테에 많이 등장하나요? 제가 조금 급하게 준비하고 있는 상태라 이론을 필수 알고리즘2까지만 들어도 될지 아니면 그래프까지 다 들어야될지 고민중입니다. 조언 주시면 감사하겠습니다!

python 코딩-테스트 알고리즘

Câu trả lời 1

1

ally

안녕하세요, 최재원님!

 

[BOJ 2133 풀이1 최적화에 대한 질문]

말씀하신 것처럼 누적합을 활용하면 풀이 1의 시간 복잡도를 O(N)으로 줄일 수 있습니다.

누적합을 활용하여 풀이1을 작성해보면 아래와 같이 나타낼 수 있겠네요.

# solve
dp = [0] * 31
dp[0] = 1

psum = [0] * 31
psum[0] = 1

for n in range(2, 31, 2):
    dp[n] = dp[n - 2] * 3
    if n - 4 >= 0:
        dp[n] += 2 * psum[n - 4]
    psum[n] = psum[n - 2] + dp[n]

# input
N = int(input())

print(dp[N])

 

[효율적인 코딩테스트 단기 공부법에 대한 질문]

코딩테스트에 나오는 빈도수로 따지면, 필수 알고리즘1 > 그래프 알고리즘 > 필수 알고리즘2 로 나타낼 수 있겠네요. 따라서 필수 알고리즘1을 다 들으셨다면, 그래프 알고리즘을 먼저 들으시는 것을 추천드립니다!

 

또 궁금하신 점 있으시면 질문해주세요. :)

Iterable 관련 설명 중 의문점

1

73

1

DP 알고리즘 index 0 이유?

0

80

2

백준에서 queue.PriorityQueue() 사용 시 런타임에러가 납니다.

0

78

2

(시간 초과) BOJ 1342 관련하여 질문이 있습니다

1

79

2

BFS, DFS

0

105

2

이중연결리스트에 관한 수업 내용도 있을까요?

0

98

1

영상에서 설명이 잘못됐고 자막이 맞는 내용이라고 자막에 표기

0

113

2

최대값 int(1e6, 1e7, 1e8) 기준

0

273

2

섹션 3 BOJ 1342 //= 연산자 관련

0

87

3

라이브러리 사용

0

118

2

2번 구현 방법 질문 있습니다.

0

167

1

브루트 포스 풀이

0

144

2

다익스트라 음수 간선

0

159

1

종료 조건

0

117

2

BOJ 1342 메모리초과 관련

0

123

2

진짜 엄청나네요. 이 가격에 새로운 컨텐츠 추가라니

0

215

1

섹션3 브루트포스 알고리즘 1342 풀이1 질문

0

151

2

boj 3020

0

127

1

강의 내용 중 백트래킹 존재 여부

0

156

1

제가 공부하는 방법이 괜찮은지 궁금합니다

1

261

2

DP 11053관련 질문있습니다.

0

120

1

17609 투포인터 문제를 재귀로 풀 경우가 궁금합니다!

0

138

3

3020번 풀이 코드관련 질문있어요

0

172

2

재귀 관련 문제 관찰할 때 질문

0

198

1