BackJoon Algorithm Repository
๐ Purpose : Ready for coding test ๐ฅ
๐ Goal : I try to solve the algorithm one per day
๐ date : 2020.02.07 ~ ing
๊ตฌํ ๊ทธ ์์ฒด์ ๋ฌธ์ ์ด๋ค.
๋ฌธ์ ์์ ์๊ตฌํ๋ ์กฐ๊ฑด์ ์ถฉ์กฑํ๊ณ ๋ฌธ์ ์์ ํ๋ผ๋ ๋๋ก ๊ตฌํํ๋ ๊ตฌํ ๊ทธ ์์ฒด!
Number
level
date
Solved
etc
14503
G5
201130
โญ
2659
S4
201201
โญ
1337
S4
201204
โญ
1173
B2
201209
โญ
10951
B3
201226
โญ
EOF๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋์ง ํ์
ํ๋ ๋ฌธ์
10818
B3
201226
โญ
์ต๋,์ต์๊ฐ ๊ตฌํ๋ ๋ฌธ์
8958
B2
201226
โญ
OX ์ ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์
Brute + Force ๋ก ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ณ ๋ คํ๊ณ ๋ค ํด๋ณด๋ ๋ฐฉ๋ฒ์ด๋ค.
์ด๋ป๊ฒ ๋ณด๋ฉด ๋ฌด์ฒ ์ฌ์ด๋ฌธ์ ๊ฐ ๋ ์๋ ์์ง๋ง ๊ตฌํ๊ณผ ์์ธ๊ฐ ๋ง์ด ๋ํ๋๋ ๋ฌธ์ ๋ผ๋ฉด ์ด๋ ค์ธ ์๋ ์๋ ์๊ณ ๋ฆฌ์ฆ
์์ ํ์์ ์ผ์ข
์ด๋ค.
Number
level
date
Solved
etc
1436
S5
201130
โญ
1107
G5
201202
โญ
๋๋น์ฐ์ ํ์
Queue๋ฅผ ํ์ฉํด์ ๋ฌธ์ ํด๊ฒฐ
BFS Problem Link
Number
level
date
Solved
etc
11559
G5
201201
โญ
2660
G5
201201
โญ
DFS Problem Link
Number
level
date
Solved
etc
13023
G5
201214
โญ
3109
G2
201215
โ
BackTracking Problem Link
Number
level
date
Solved
etc
์ฌ๊ทํจ์๋ก, ์๊ธฐ์์ ์ ํธ์ถํ์ฌ ๊ฐ์ ๋์ถํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์ข
๋ฃ์กฐ๊ฑด์ ๊ผญ ์ค์ ํด์ผํ๋ฉฐ StackOverFlow๋ฅผ ์กฐ์ฌํด์ผํ๋ค.
Recursion Problem Link
Number
level
date
Solved
etc
15650
S3
201203
โญ
Combination & Permutation
Combination Problem Link
Number
level
date
Solved
etc
Permutation Problem Link
Number
level
date
Solved
etc
Greedy Problem Link
Number
level
date
Solved
etc
2437
G3
201223
โ
ํด์ค๋ดค์
1339
G4
201223
โญ
Dynamic Programming์ ์ฝ์๋ก DP๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ ํ์์ ์ฐพ๋ ๋ฌธ์ ๋ก ๋ฌธ์ ๋ฅผ ๋ดค์ ๋ DP๋ผ๊ณ ๊ฐ์ ์ก๊ธฐ๋ ์ด๋ ค์ธ ๋ฟ๋๋ฌ, ๊ทธ ๊ท์น์ ๋ด์ ๋ด๊ณ ์๋ ์์ ๋์ถํ๊ธฐ๊น์ง ์๊ฐ์ด ๊ฝค ๊ฑธ๋ฆฌ๋ ๋ฌธ์ ๋ค.
๋ฌธ์ ๋ฅผ ํธ๋ ๊ณผ์ ์์ ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ์ง๋ง, ๊ตฌํ์ ์๋์ ์ผ๋ก ์ฝ๋ค.
memorization๊ธฐ๋ฒ์ผ๋ก ๋ฐฐ์ด์ ์ ์ฅํ๋ฉด์ ๊ฐ๋ค์ ์ ์ฅํ๋ ๋ฐฉ์์ผ๋ก ๋ฌธ์ ๋ฅผ ํ์ด๋๊ฐ๋ค.
๋ฌธ์ ๋ฅผ ํ๋ฉด ํ์๋ก ๋ด๊ฐ ๊ณผ์ฐ ์ด ์ ํ์ ์๊ณ ์๋๊ฑด๊ฐ ์๋ฌธ์ด ๋ ๋ค.
dp๋ฅผ ํ๋ฉด์ ๋ฐํ์์ด ๋์ง ์๋์ง ํญ์ ์ ๊ฒฝ์จ์ผ ํ๋ค. ( ์์ฆ ๋ฌธ์ ๋ฅผ ํ๋ค๊ฐ ๋ฐํ์์ด ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ค. )
๋ฐํ์์ด ๋์ง ์๊ฒ ํ๋ ค๋ฉด, dp๋ฅผ ํฌ๊ธฐ๋ฅผ ์
๋ ฅ๊ฐ์ผ๋ก ํ์ง๋ง๊ณ ๋ฌธ์ ์์ ์ ์ํ ์ต๋ size๋ก ๋ง๋ค์ด์ฃผ์!
ex) dp[1] =1, dp[2] = 1 ์ด ์๋ ๊ฒฝ์ฐ, n=1๋ก ์
๋ ฅ์ด ๋ค์ด์จ๋ค๋ฉด dp[1], dp[2] ์ ์ ๊ทผํ์ง ๋ชปํด์ ๋ฐํ์์๋ฌ๊ฐ ๋๋ค.
dp์์ ๋ค์ด๊ฐ๋ ๊ฐ์ด int๊ฐ์ธ์ง long ์ธ์ง ํ์ธ ํด์ผํ๋ค.
์ต๋๋ก ๋ค์ด๊ฐ ์ ์๋ ๊ฐ์ผ๋ก ํ
์คํธ ํด๋ณธ ํ ์ํ๋ ๊ฐ์ ์ถ๋ ฅํ๋ ์ง ํ์ธํ์.
์ ๋ฐ ๊ผญ ํ์ธํ์! ( ์ด ๋ถ๋ถ์์ ๋๋ฌด ๋ง์ด ํ๋ฆฐ๋คใ
ใ
)
DP Problem Link
Number
level
date
Solved
etc
2579
S3
201203
โ
9461
S3
201203
โ
1890
S2
201208
โญ
10844
S1
201221
โ
Binary Search Problem Link
Number
level
date
Solved
etc
Parametric Search Problem Link
Number
level
date
Solved
etc
์ธ์ Stack์ด ์ฐ์ด๋๊ฐ?
๋ฌธ์ ๋ฅผ ํ๋ค๋ณด๋ฉด ์ด๋ค ๊ฒ์ ๋ํ ์ง์ ๋ง์ถ๋ ๋ฌธ์ ( ex. ๊ดํธ์ ์ง์ด ์๋ง๊ฒ ๋ง์ถฐ์ ธ์๋์ง ) ๋ฑ stack์
ํน์ฑ์ ์ฌ์ฉํ๋ ๋ฌธ์ ๋ค์ ์ฃผ๋ก ์ฐ์ธ๋ค.
๋ฌธ์ ๋ฒํธ
level
date
Solved
etc
4949
S4
201130
โญ
์ ์
์ ์ถ ( Fist-In-First-Out)
๋จ๋
์ผ๋ก queue๋ง ๊ตฌํํด์ ๋ฌธ์ ๋ฅผ ํธ๋ ๋ฐฉ์์ ๊ฑฐ์ ๋์ค์ง ์๊ณ BFS, ๊ทธ๋ฆฌ๋ ๋ฑ ์ฌ๋ฌ ์๊ณ ๋ฆฌ์ฆ๊ณผ ์์ฌ์ ๋์จ๋ค.
๋ฌธ์ ๋ฒํธ
level
date
Solved
etc
19366
S3
201127
โญ
์ฐ์ ์์ ํ๋ผ๊ณ ํ๋ฉฐ ํ์ด๋ผ๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ค.
ํ์ ํํ๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง, ์ฐ์ ์์์ ๋ง์ถฐ ์๋์ผ๋ก? ์์๊ฐ ๋งค๊ฒจ์ ธ์ ์ ์ฅ๋์ด์ง๋ ๊ณต๊ฐ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
ํ์๋ ์ต๋ํ, ์ต์ํ์ด ์กด์ฌํ๋๋ฐ, ์ผ๋ฐ์ ์ธ PQ๋ฅผ ๊ตฌํํ๋ค๋ฉด, ์ต์ํ์ด ๊ตฌํ๋๊ณ reverseOrder์ ํด์ฃผ๋ฉด ์ต๋ํ์ ๊ตฌํํ ์ ์๋ค.
์ฐ์ ์์ ํ๋ ํผ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ์กด์ฌํ๊ธด ํ์ง๋ง, ๊ทธ๋ํ ๋ฌธ์ ๋ฅผ ํ ๋ ๊ฐ๋ ์ฌ์ฉ๋์๋ ๊ฒ์ผ๋ก ๊ธฐ์ตํ๋ค.
์ต์ํ๊ณผ ์ต๋ํ์ ๊ฐ์ด ์ฌ์ฉํด์ ํธ๋ ๋ฌธ์ ๋ ์กด์ฌํ๋ค.
๋ฌธ์ ๋ฒํธ
level
date
Solved
etc
1655
G2
201202
โญ
Dijkstra Algorithm is All pairs shortest path problem.
It is an algorithm for finding the shortest paths between nodes in a graph
If you want to use Dijkstra Algorithm, you have to know the start, end node.
If you are implemented the Dijkstra Algorithm, you need to use 1-dimensional array and initial Big value.
์ด๊ฒ์ DP์ ์ข
๋ฅ๋ผ๊ณ ํ๋ค. ( ๊ทธ ์ด์ ๋, ์ฌ์ฉํ dist์ ๊ฑฐ๋ฆฌ๋ฅผ )
Priority Queue ์ฌ์ฉ
Visited ๋ฐฐ์ด ( ๋ฐฉ๋ฌธํ ๋
ธ๋๋ฅผ ๊ผญ ๋ค์ ๋ฐฉ๋ฌธํ์ง ์๋๋ก ์ฒ๋ฆฌํด์ฃผ์ด์ผ ํ๋ค. )
๋ฌธ์ ๋ฒํธ
level
date
Solved
etc
1753
G5
201205
โญ
1504
G4
201207
โญ
1916
G5
201209
โญ
๋ฌธ์ ๋ฒํธ
level
date
Solved
etc
1613
G3
201124
โญ
๋ฌธ์ ๋ฒํธ
level
date
Solved
etc
What is Topological Sort?
This Algorithm is sorting directional graph's node.
You may count the node that visited
DAG(directed acyclic graph) -> directed and acyclic (์ฌ์ดํด์ด ์๋ค.)
๊ทธ๋ํ์์ ๋ฐ๋์ ์์ ๋ณด๋ค ์ ํ๋์ด์ผ ํ ์ผ์ ๋ค ๋๋ด์ผ๋ง ์์
์ ๋ค์ด๊ฐ ์ ์๋(๋ฐฉ๋ฌธํ ์ ์๋) ์กฐ๊ฑด์ด ์ฃผ์ด์ง ๋
์ ํ๊ด๊ณ๊ฐ ๋ถ๋ช
ํ๋ค๋ฉด ์์์ ๋ ฌ์ ์ฌ์ฉํด์ผํ๋ค.
There can be multiple results of this algorithm. ( Queue's size is over 1)
๋ฌธ์ ๋ฒํธ
level
date
Solved
etc
1005
G3
201124
โญ
1516
G3
201123
โญ
2623
G2
201123
โญ
๋ฌธ์ ๋ฒํธ
level
date
Solved
etc
1717
G4
201126
โญ
๋ฌด๋ฐฉํฅ, ๋ฐฉํฅ์ด ์๋ ํธ๋ฆฌ๊ฐ ์๋ค.
๋ฌด๋ฐฉํฅ์ธ ๊ฒฝ์ฐ, ๊ฐ์ *2 = ์ ์ -1
๋ฐฉํฅ์ด ์๋ ํธ๋ฆฌ์ธ ๊ฒฝ์ฐ, ๊ฐ์ ์ ์ = ์ ์ -1
ํธ๋ฆฌ์๋ ์ํ, ์ฌ์ดํด์ด ์กด์ฌํ๋ฉด ์๋๋ค. ( ์
ํ์ฌ์ดํด๋ ์๋จ. )
๋ฌธ์ ๋ฒํธ
level
date
Solved
etc
4256
G5
201205
โญ
4803
G4
201206
โ
Minimum Spanning Tree (MST)
What is the Minimum Spanning Tree?
ํธ๋ฆฌ์ ๊ฐ์ ์ ๊ฐ์ค์น(cost)๊ฐ ์์ ๋, ๊ฐ์ ์ ๊ฐ์ค์น ํฉ์ด ์ต์์ธ ์คํจ๋ ํธ๋ฆฌ
๋ฌธ์ ๋ฒํธ
level
date
Solved
etc
What is the Segment Tree?
๊ตฌ๊ฐ์ ๋ณด์กดํ๊ณ ์๋ ํธ๋ฆฌ
์ฌ๊ท๋ฅผ ํ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํ ์ ์๋ค.
๋ฌธ์ ๋ฒํธ
level
date
Solved
etc
2042
G1
201203
โญ