Skip to content

yougahee/algorithm-boj

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 

Repository files navigation

BackJoon Algorithm Repository

๐Ÿ‘‰ Purpose : Ready for coding test ๐Ÿ”ฅ
๐Ÿ‘‰ Goal : I try to solve the algorithm one per day
๐Ÿ‘‰ date : 2020.02.07 ~ ing


Simulation

What is Simulation?

  • ๊ตฌํ˜„ ๊ทธ ์ž์ฒด์˜ ๋ฌธ์ œ์ด๋‹ค.
  • ๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š” ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜๊ณ  ๋ฌธ์ œ์—์„œ ํ•˜๋ผ๋Š” ๋Œ€๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ตฌํ˜„ ๊ทธ ์ž์ฒด!

Solved Problem

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

What is Brute Force?

  • Brute + Force ๋กœ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ณ ๋ คํ•˜๊ณ  ๋‹ค ํ•ด๋ณด๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
  • ์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ๋ฌด์ฒ™ ์‰ฌ์šด๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๊ตฌํ˜„๊ณผ ์˜ˆ์™ธ๊ฐ€ ๋งŽ์ด ๋‚˜ํƒ€๋‚˜๋Š” ๋ฌธ์ œ๋ผ๋ฉด ์–ด๋ ค์šธ ์ˆ˜๋„ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ์™„์ „ํƒ์ƒ‰์˜ ์ผ์ข…์ด๋‹ค.

Solved Problem

Number level date Solved etc
1436 S5 201130 โญ•
1107 G5 201202 โญ•

BFS & DFS

What is BFS?

  • ๋„ˆ๋น„์šฐ์„ ํƒ์ƒ‰
  • Queue๋ฅผ ํ™œ์šฉํ•ด์„œ ๋ฌธ์ œํ•ด๊ฒฐ

Solved Problem

BFS Problem Link

Number level date Solved etc
11559 G5 201201 โญ•
2660 G5 201201 โญ•

What is the DFS?

  • ๊นŠ์ด์šฐ์„ ํƒ์ƒ‰

Solved Problem

DFS Problem Link

Number level date Solved etc
13023 G5 201214 โญ•
3109 G2 201215 โŒ

BackTracking

Solved Problem

BackTracking Problem Link

Number level date Solved etc

Recursion

What is the Recursion?

  • ์žฌ๊ท€ํ•จ์ˆ˜๋กœ, ์ž๊ธฐ์ž์‹ ์„ ํ˜ธ์ถœํ•˜์—ฌ ๊ฐ’์„ ๋„์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
  • ์ข…๋ฃŒ์กฐ๊ฑด์„ ๊ผญ ์„ค์ •ํ•ด์•ผํ•˜๋ฉฐ StackOverFlow๋ฅผ ์กฐ์‹ฌํ•ด์•ผํ•œ๋‹ค.

Solved Problem

Recursion Problem Link

Number level date Solved etc
15650 S3 201203 โญ•

Combination & Permutation

Solved Problem

Combination Problem Link

Number level date Solved etc

Permutation

Solved Problem

Permutation Problem Link

Number level date Solved etc

Greedy

Solved Problem

Greedy Problem Link

Number level date Solved etc
2437 G3 201223 โŒ ํ•ด์„ค๋ดค์Œ
1339 G4 201223 โญ•

DP

What is DP?

  • Dynamic Programming์˜ ์•ฝ์ž๋กœ DP๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
  • ์ ํ™”์‹์„ ์ฐพ๋Š” ๋ฌธ์ œ๋กœ ๋ฌธ์ œ๋ฅผ ๋ดค์„ ๋•Œ DP๋ผ๊ณ  ๊ฐ์„ ์žก๊ธฐ๋„ ์–ด๋ ค์šธ ๋ฟ๋”๋Ÿฌ, ๊ทธ ๊ทœ์น™์„ ๋‹ด์•„ ๋‚ด๊ณ  ์žˆ๋Š” ์‹์„ ๋„์ถœํ•˜๊ธฐ๊นŒ์ง€ ์‹œ๊ฐ„์ด ๊ฝค ๊ฑธ๋ฆฌ๋Š” ๋ฌธ์ œ๋‹ค.
  • ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ๊ณผ์ •์—์„œ ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆฌ์ง€๋งŒ, ๊ตฌํ˜„์€ ์ƒ๋Œ€์ ์œผ๋กœ ์‰ฝ๋‹ค.
  • memorization๊ธฐ๋ฒ•์œผ๋กœ ๋ฐฐ์—ด์— ์ €์žฅํ•˜๋ฉด์„œ ๊ฐ’๋“ค์„ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋‚˜๊ฐ„๋‹ค.
  • ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด ํ’€์ˆ˜๋ก ๋‚ด๊ฐ€ ๊ณผ์—ฐ ์ด ์œ ํ˜•์„ ์•Œ๊ณ  ์žˆ๋Š”๊ฑด๊ฐ€ ์˜๋ฌธ์ด ๋“ ๋‹ค.

Things to watch out for

  1. dp๋ฅผ ํ’€๋ฉด์„œ ๋Ÿฐํƒ€์ž„์ด ๋‚˜์ง€ ์•Š๋Š”์ง€ ํ•ญ์ƒ ์‹ ๊ฒฝ์จ์•ผ ํ•œ๋‹ค. ( ์š”์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€๋‹ค๊ฐ€ ๋Ÿฐํƒ€์ž„์ด ๋‚˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜๋‹ค. )
    • ๋Ÿฐํƒ€์ž„์ด ๋‚˜์ง€ ์•Š๊ฒŒ ํ•˜๋ ค๋ฉด, dp๋ฅผ ํฌ๊ธฐ๋ฅผ ์ž…๋ ฅ๊ฐ’์œผ๋กœ ํ•˜์ง€๋ง๊ณ  ๋ฌธ์ œ์—์„œ ์ œ์‹œํ•œ ์ตœ๋Œ€ size๋กœ ๋งŒ๋“ค์–ด์ฃผ์ž!
    • ex) dp[1] =1, dp[2] = 1 ์ด ์žˆ๋Š” ๊ฒฝ์šฐ, n=1๋กœ ์ž…๋ ฅ์ด ๋“ค์–ด์˜จ๋‹ค๋ฉด dp[1], dp[2] ์— ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•ด์„œ ๋Ÿฐํƒ€์ž„์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค.
  2. dp์•ˆ์— ๋“ค์–ด๊ฐ€๋Š” ๊ฐ’์ด int๊ฐ’์ธ์ง€ long ์ธ์ง€ ํ™•์ธ ํ•ด์•ผํ•œ๋‹ค.
    • ์ตœ๋Œ€๋กœ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์œผ๋กœ ํ…Œ์ŠคํŠธ ํ•ด๋ณธ ํ›„ ์›ํ•˜๋Š” ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ์ง€ ํ™•์ธํ•˜์ž.
    • ์ œ๋ฐœ ๊ผญ ํ™•์ธํ•˜์ž! ( ์ด ๋ถ€๋ถ„์—์„œ ๋„ˆ๋ฌด ๋งŽ์ด ํ‹€๋ฆฐ๋‹คใ… ใ… )

Solved Problem

DP Problem Link

Number level date Solved etc
2579 S3 201203 โŒ
9461 S3 201203 โŒ
1890 S2 201208 โญ•
10844 S1 201221 โŒ

Binary Search

Solved Problem

Binary Search Problem Link

Number level date Solved etc

Parametric Search

Solved Problem

Parametric Search Problem Link

Number level date Solved etc

Stack

What is Stack?

  • FILO(First In Last Out)

์–ธ์ œ Stack์ด ์“ฐ์ด๋Š”๊ฐ€?

  • ๋ฌธ์ œ๋ฅผ ํ’€๋‹ค๋ณด๋ฉด ์–ด๋–ค ๊ฒƒ์— ๋Œ€ํ•œ ์ง์„ ๋งž์ถ”๋Š” ๋ฌธ์ œ ( ex. ๊ด„ํ˜ธ์˜ ์ง์ด ์•Œ๋งž๊ฒŒ ๋งž์ถฐ์ ธ์žˆ๋Š”์ง€ ) ๋“ฑ stack์˜ ํŠน์„ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ œ๋“ค์— ์ฃผ๋กœ ์“ฐ์ธ๋‹ค.

Solve Problem

๋ฌธ์ œ๋ฒˆํ˜ธ level date Solved etc
4949 S4 201130 โญ•

Queue

What is Queue?

  • ์„ ์ž…์„ ์ถœ ( Fist-In-First-Out)
  • ๋‹จ๋…์œผ๋กœ queue๋งŒ ๊ตฌํ˜„ํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ๋ฐฉ์‹์€ ๊ฑฐ์˜ ๋‚˜์˜ค์ง€ ์•Š๊ณ  BFS, ๊ทธ๋ฆฌ๋”” ๋“ฑ ์—ฌ๋Ÿฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์„ž์—ฌ์„œ ๋‚˜์˜จ๋‹ค.

Solve Problem

๋ฌธ์ œ๋ฒˆํ˜ธ level date Solved etc
19366 S3 201127 โญ•

Priority Queue

What is Priority Queue?

  • ์šฐ์„ ์ˆœ์œ„ ํ๋ผ๊ณ  ํ•˜๋ฉฐ ํž™์ด๋ผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ํ์˜ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ, ์šฐ์„ ์ˆœ์œ„์— ๋งž์ถฐ ์ž๋™์œผ๋กœ? ์ˆœ์œ„๊ฐ€ ๋งค๊ฒจ์ ธ์„œ ์ €์žฅ๋˜์–ด์ง€๋Š” ๊ณต๊ฐ„์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.
  • ํž™์—๋Š” ์ตœ๋Œ€ํž™, ์ตœ์†Œํž™์ด ์กด์žฌํ•˜๋Š”๋ฐ, ์ผ๋ฐ˜์ ์ธ PQ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค๋ฉด, ์ตœ์†Œํž™์ด ๊ตฌํ˜„๋˜๊ณ  reverseOrder์„ ํ•ด์ฃผ๋ฉด ์ตœ๋Œ€ํž™์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

How can it be applied?

  • ์šฐ์„ ์ˆœ์œ„ ํ๋Š” ํ˜ผ์ž ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์กด์žฌํ•˜๊ธด ํ•˜์ง€๋งŒ, ๊ทธ๋ž˜ํ”„ ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ ๊ฐ€๋” ์‚ฌ์šฉ๋˜์—ˆ๋˜ ๊ฒƒ์œผ๋กœ ๊ธฐ์–ตํ•œ๋‹ค.
  • ์ตœ์†Œํž™๊ณผ ์ตœ๋Œ€ํž™์„ ๊ฐ™์ด ์‚ฌ์šฉํ•ด์„œ ํ‘ธ๋Š” ๋ฌธ์ œ๋„ ์กด์žฌํ•œ๋‹ค.

Solve Problem

๋ฌธ์ œ๋ฒˆํ˜ธ level date Solved etc
1655 G2 201202 โญ•

Graph

Dijkstra

What is Dijkstra?

  • 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์˜ ๊ฑฐ๋ฆฌ๋ฅผ )

How

  • Priority Queue ์‚ฌ์šฉ
  • Visited ๋ฐฐ์—ด ( ๋ฐฉ๋ฌธํ•œ ๋…ธ๋“œ๋ฅผ ๊ผญ ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š๋„๋ก ์ฒ˜๋ฆฌํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. )

Solve Problem

๋ฌธ์ œ๋ฒˆํ˜ธ level date Solved etc
1753 G5 201205 โญ•
1504 G4 201207 โญ•
1916 G5 201209 โญ•

Floyd Warshall

Solve Problem

๋ฌธ์ œ๋ฒˆํ˜ธ level date Solved etc
1613 G3 201124 โญ•

Bellman-Ford

Solve Problem

๋ฌธ์ œ๋ฒˆํ˜ธ level date Solved etc

Topological Sort

What is Topological Sort?

  • This Algorithm is sorting directional graph's node.

How do you sort it?

  • You may count the node that visited

When do you use it?

  • DAG(directed acyclic graph) -> directed and acyclic (์‚ฌ์ดํด์ด ์—†๋‹ค.)
  • ๊ทธ๋ž˜ํ”„์—์„œ ๋ฐ˜๋“œ์‹œ ์ž์‹ ๋ณด๋‹ค ์„ ํ–‰๋˜์–ด์•ผ ํ•  ์ผ์„ ๋‹ค ๋๋‚ด์•ผ๋งŒ ์ž‘์—…์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š”(๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ๋Š”) ์กฐ๊ฑด์ด ์ฃผ์–ด์งˆ ๋•Œ
  • ์ „ํ›„๊ด€๊ณ„๊ฐ€ ๋ถ„๋ช…ํ•˜๋‹ค๋ฉด ์œ„์ƒ์ •๋ ฌ์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

Characteristic

  • There can be multiple results of this algorithm. ( Queue's size is over 1)

Solve Problem

๋ฌธ์ œ๋ฒˆํ˜ธ level date Solved etc
1005 G3 201124 โญ•
1516 G3 201123 โญ•
2623 G2 201123 โญ•

Union-Find

What is Union-Find

Solve Problem

๋ฌธ์ œ๋ฒˆํ˜ธ level date Solved etc
1717 G4 201126 โญ•

Tree

Characteristic

  • ๋ฌด๋ฐฉํ–ฅ, ๋ฐฉํ–ฅ์ด ์žˆ๋Š” ํŠธ๋ฆฌ๊ฐ€ ์žˆ๋‹ค.
  • ๋ฌด๋ฐฉํ–ฅ์ธ ๊ฒฝ์šฐ, ๊ฐ„์„ *2 = ์ •์ -1
  • ๋ฐฉํ–ฅ์ด ์žˆ๋Š” ํŠธ๋ฆฌ์ธ ๊ฒฝ์šฐ, ๊ฐ„์„ ์˜ ์ˆ˜ = ์ •์  -1
  • ํŠธ๋ฆฌ์—๋Š” ์ˆœํ™˜, ์‚ฌ์ดํด์ด ์กด์žฌํ•˜๋ฉด ์•ˆ๋œ๋‹ค. ( ์…€ํ”„์‚ฌ์ดํด๋„ ์•ˆ๋จ. )

Solve Problem

๋ฌธ์ œ๋ฒˆํ˜ธ level date Solved etc
4256 G5 201205 โญ•
4803 G4 201206 โŒ

Minimum Spanning Tree (MST)

What is the Minimum Spanning Tree?

  • ํŠธ๋ฆฌ์˜ ๊ฐ„์„ ์— ๊ฐ€์ค‘์น˜(cost)๊ฐ€ ์žˆ์„ ๋•Œ, ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜ ํ•ฉ์ด ์ตœ์†Œ์ธ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ

Solve Problem

๋ฌธ์ œ๋ฒˆํ˜ธ level date Solved etc

Segment Tree

What is the Segment Tree?

  • ๊ตฌ๊ฐ„์„ ๋ณด์กดํ•˜๊ณ  ์žˆ๋Š” ํŠธ๋ฆฌ
  • ์žฌ๊ท€๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ๋‹ค.

Solve Problem

๋ฌธ์ œ๋ฒˆํ˜ธ level date Solved etc
2042 G1 201203 โญ•

About

๐Ÿ”ฅAlgorithm for coding test๐Ÿ”ฅ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages