inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)

'필수 알고리즘 2' 파트 한눈에 정리

2133번 문제풀이 관련 질문

해결된 질문

105

purplejay

작성한 질문수 5

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 코딩-테스트 알고리즘

답변 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

75

1

DP 알고리즘 index 0 이유?

0

82

2

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

0

78

2

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

1

82

2

BFS, DFS

0

107

2

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

0

98

1

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

0

113

2

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

0

276

2

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

0

88

3

라이브러리 사용

0

118

2

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

0

170

1

브루트 포스 풀이

0

146

2

다익스트라 음수 간선

0

165

1

종료 조건

0

118

2

BOJ 1342 메모리초과 관련

0

124

2

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

0

216

1

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

0

153

2

boj 3020

0

129

1

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

0

157

1

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

1

264

2

DP 11053관련 질문있습니다.

0

124

1

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

0

143

3

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

0

174

2

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

0

201

1