Algorithm

๊ฒ€์ƒ‰๊ฒฐ๊ณผ 28 ๊ฐœ
[๋ฐฑ์ค€] 14503. ๋กœ๋ด‡์ฒญ์†Œ๊ธฐ - Java

1. ๋ฌธ์ œ์ดํ•ด ์ œ์ผ ๋จผ์ € ์• ๋งคํ–ˆ๋˜ ๋ถ€๋ถ„์€ ๋กœ๋ด‡์ฒญ์†Œ๊ธฐ์˜ ์œ„์น˜ ์˜€๋‹ค. ์ง€๋„์˜ ๋ถ์ชฝ์—์„œ๋ถ€ํ„ฐ r๋ฒˆ์งธ, ์„œ์ชฝ์—์„œ๋ถ€ํ„ฐ c๋ฒˆ์งธ๋กœ ์œ„์น˜ํ•œ ์นธ์ด ๋กœ๋ด‡์ฒญ์†Œ๊ธฐ์˜ ์œ„์น˜๋กœ ์ฃผ์–ด์กŒ๋Š”๋ฐ, ๋ฒฝ์—๋Š” ๋กœ๋ด‡์ฒญ์†Œ๊ธฐ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์—†์œผ๋‹ˆ ์ฒซ๋ฒˆ์งธ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋ฅผ ๋ณด๊ณ  r์˜ ๋ฒ”์œ„๊ฐ€ [0:N), c์˜ ๋ฒ”์œ„๊ฐ€ [0:M)๋ผ๋Š” ๊ฒƒ์„ ์ง์ž‘ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ทธ ๋‹ค์Œ์€ 2-b์˜ ์„ค๋ช…์„ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ์งˆ๋ฌธ๊ฒ€์ƒ‰ ๊ฒŒ์‹œํŒ์„ ํ†ตํ•ด "1๋ฒˆ์œผ๋กœ ๋Œ์•„๊ฐ€๊ฑฐ๋‚˜ ํ›„์ง„"ํ•˜์ง€ ์•Š๊ณ  2a๋ฒˆ ๋‹จ๊ณ„๊ฐ€ ์—ฐ์†์œผ๋กœ 4๋ฒˆ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋˜ํ•œ ์ด ์กฐ๊ฑด์€ ํ˜„์žฌ ์œ„์น˜์—์„œ ๋™์„œ๋‚จ๋ถ ๋ชจ๋‘ (๋ฒฝ or ์ฒญ์†Œํ•  ๊ณต๊ฐ„์ด ์—†์Œ) ๊ฒฝ์šฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์—ฌ๊ธฐ๊นŒ์ง€ ์ดํ•ดํ•˜๋Š”๋ฐ ์ง„์งœ ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‹ค....ใ…Ž 2. ๋ฌธ์ œํ’€์ด static class Position { int r, c, d; public Po..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] Hash ์ •๋ฆฌ

Hash Function(ํ•ด์‹œ ํ•จ์ˆ˜) ํ•ด์‹œํ•จ์ˆ˜ ๋˜๋Š” ํ•ด์‹œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ž„์˜์˜ ๊ธธ์ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ ์ •๋œ ๊ธธ์ด์˜ ๋ฐ์ดํ„ฐ๋กœ ๋งคํ•‘ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งํ•œ๋‹ค. ๊ณ ์ •๋œ ๊ธธ์ด์˜ ๋ฐ์ดํ„ฐ๋กœ ๋งคํ•‘ํ•˜๋Š” ๊ณผ์ •์„ ํ•ด์‹ฑ(hashing)์ด๋ผ๊ณ  ํ•˜๊ณ  ํ•ด์‹œ ํ•จ์ˆ˜์— ์˜ํ•ด ์–ป์–ด์ง€๋Š” ๊ฐ’์„ ํ•ด์‹œ ๊ฐ’, ํ•ด์‹œ์ฝ”๋“œ ๋˜๋Š” ํ•ด์‹œ(hash) ๋ผ๊ณ  ํ•œ๋‹ค. ํ•ด์‹œํ•จ์ˆ˜์˜ ์กฐ๊ฑด 1. ํ•˜๋‚˜์˜ ์ถœ๋ ฅ์— ๋Œ€ํ•˜์—ฌ ์ด ์ถœ๋ ฅ์œผ๋กœ ๋งคํ•‘ํ•˜๋Š” ์ž…๋ ฅ์„ ์ฐพ๋Š” ๊ฒƒ์ด ๊ณ„์‚ฐ์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. 2. ํ•˜๋‚˜์˜ ์ž…๋ ฅ์— ๋Œ€ํ•˜์—ฌ ๊ฐ™์€ ์ถœ๋ ฅ์œผ๋กœ ๋งคํ•‘์‹œํ‚ค๋Š” ๋‹ค๋ฅธ ์ž…๋ ฅ์„ ์ฐพ๋Š” ๊ฒƒ์ด ๊ณ„์‚ฐ์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. Hash Table(ํ•ด์‹œ ํ…Œ์ด๋ธ”) ์ž…๋ ฅ ํ‚ค ๊ฐ’์„ ํ•ด์‹œํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด์‹œ๋ฅผ ์–ป๊ณ , ๊ทธ ํ•ด์‹œ ๊ฐ’์„ ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉํ•˜์—ฌ value๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ. ๊ณ ์œ ํ•œ ์ธ๋ฑ์Šค์— ์ €์žฅ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ถ”๊ฐ€/์‚ญ์ œ ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ์ด๋™ํ• ..

[๋ฐฑ์ค€] 14003. ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด 5 - Java

์ด ๋ฌธ์ œ๋Š” ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด4(https://www.acmicpc.net/problem/14002)์—์„œ ๋ฒ”์œ„๋งŒ ๋‹ฌ๋ผ์ง„ ๋ฌธ์ œ์ด๋‹ค. ์ผ๋‹จ ์ž…๋ ฅ๊ฐ’์ด 1,000,000์ด๋ฏ€๋กœ DP๋กœ ํ’€๊ฒŒ ๋  ๊ฒฝ์šฐ 1,000,000์˜ ์ œ๊ณฑ์„ ํ•˜๋ฉด... ๋ฌด์กฐ๊ฑด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚  ๊ฒƒ์ด๋‹ค. ์ด๋ถ„ํƒ์ƒ‰์„ ์ด์šฉํ•˜์—ฌ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ O(N logN)๋กœ ๋‚ฎ์ถฐ์•ผ ํ•œ๋‹ค. 14002๋ฒˆ ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ ์ด๋ถ„ ํƒ์ƒ‰์„ ์ด์šฉํ•ด์„œ ๊ตฌํ•ด๋ดค๋Š”๋ฐ ์ž˜ ์•ˆ๊ตฌํ•ด์ ธ์„œ DP๋กœ ๋ฐ”๊ฟจ๋Š”๋ฐ... ์ด ๋ฌธ์ œ๋ฅผ ์•ฝ 2-3์‹œ๊ฐ„ ๋™์•ˆ ๋™๋™๋Œ”๋‹ค...ใ… ใ…  ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•ด์•ผ ๋  ๊ฒƒ ๊ฐ™๋‹ค๋Š” ๊ฒƒ์€ ์•Œ์•„์ฑ˜๋Š”๋ฐ ์ œ์ถœํ•˜๋ฉด ๋ฐ˜๋ก€๊ฐ€ ๊ณ„์†๊ณ„์† ๋‚˜์™”๋‹ค...ํ•˜ํ•˜ ๊ฒฐ๊ตญ G๋‹˜์˜ ํž˜์„ ๋นŒ๋ ธ๋‹ค... https://dragon-h.tistory.com/35 [๋ฐฑ์ค€ 14003: JAVA] ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด ..

[๋ฐฑ์ค€] 11053. ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด 4 - Java

๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์€ 5๊นŒ์ง€ ์žˆ๋‹ค. 3๊นŒ์ง€์™€์˜ ๋‹ค๋ฅธ ์ ์€ ๋ถ€๋ถ„ ์ˆ˜์—ด์„ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ. LIS๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ 3๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. 1. ์™„์ „ํƒ์ƒ‰ - O(N^2) 2. DP - O(N^2) 3. ์ด์ง„ํƒ์ƒ‰ ํ™œ์šฉ - O(N logN) ์™„์ „ํƒ์ƒ‰๊ณผ DP๋Š” ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๊ฐ™์ง€๋งŒ DP๋กœ ํ‘ธ๋Š” ๋ฐฉ๋ฒ•์ด ํ›จ์”ฌ ๊ฐ„๊ฒฐํ•˜๋‹ค. ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด3๊นŒ์ง€๋Š” ์ด์ง„ํƒ์ƒ‰์„ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ’€์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฌธ์ œ๋Š” ์ด์ง„ํƒ์ƒ‰์œผ๋กœ ํ’€ ์ˆ˜ ์—†๋‹ค. ์ด์ง„ํƒ์ƒ‰์„ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ LIS์˜ ๊ธธ์ด๋Š” ๊ตฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ถ€๋ถ„ ์ˆ˜์—ด์˜ ์›์†Œ๋ฅผ ๊ตฌํ•  ์ˆœ ์—†๊ธฐ ๋•Œ๋ฌธ์—... (๊ตฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค...! 2022.04.06 - [์•Œ๊ณ ๋ฆฌ์ฆ˜/BOJ] - [๋ฐฑ์ค€] 14003. ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด5 - Java ์ด ๊ธ€์„ ์ฐธ๊ณ ํ•˜์‹œ๊ธธ...) ๋”ฐ๋ผ์„œ ์ด ๋ฌธ์ œ๋Š” D..

[๋ฐฑ์ค€] 15961. ํšŒ์ „์ดˆ๋ฐฅ - Java

๋‹น์—ฐํžˆ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚˜์™”๋‹ค^^ N์ด ์ตœ๋Œ€ 3,000,000์ด๊ณ  k์€ ์ตœ๋Œ€ 3000์ด๋ฏ€๋กœ ์™„์ „ํƒ์ƒ‰์„ ํ•˜๋ฉด 3,000,000 * 3,000๋ฒˆ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์•ผ ํ•œ๋‹ค. 1์‹œ๊ฐ„๋™์•ˆ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„๋ฅ˜๋ฅผ ๋ดค๋‹ค... ํˆฌํฌ์ธํ„ฐ๋Š” ๋Œ€์• ์• ์ถฉ ์•Œ์ง€๋งŒ ์Šฌ๋ผ์ด๋”ฉ๋„์–ด๋Š” ์ฒ˜์Œ ๋“ค์–ด๋ด์„œ ๊ตฌ๊ธ€์„ ์ฐพ์•„๋ดค๋‹ค. k = 4 ์ด๋ฏ€๋กœ 0๋ฒˆ์งธ๋ถ€ํ„ฐ 3๋ฒˆ์งธ๊นŒ์ง€ ์ดˆ๋ฐฅ์˜ ์ข…๋ฅ˜๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  start๋Š” 0, end๋Š” 3์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ๋‹ค์Œ ๋‹จ๊ณ„๋Š” 0๋ฒˆ์งธ ์ดˆ๋ฐฅ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ถ€๋ถ„์—์„œ ์ œ๊ฑฐํ•˜๊ณ  start ๊ฐ’์„ 1 ์ฆ๊ฐ€์‹œ์ผœ์ฃผ๊ณ , end ๊ฐ’์„ 1 ์ฆ๊ฐ€์‹œ์ผœ end๋ฒˆ์งธ ์ดˆ๋ฐฅ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ถ€๋ถ„์— ์ถ”๊ฐ€ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด 7-9-7-30 ์—์„œ 9-7-30-2 ๋‹ค์Œ์œผ๋กœ ๋„˜์–ด๊ฐˆ ๋•Œ ์–‘ ๋์— ์žˆ๋Š” ์ดˆ๋ฐฅ๋“ค๋งŒ..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ตœ์žฅ ์ฆ๊ฐ€ ์ˆ˜์—ด(LIS, Longest Increasing Subsequence)

์ตœ์žฅ ์ฆ๊ฐ€ ์ˆ˜์—ด(LIS) ๋ฐฐ์—ด ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ํฌ๊ธฐ๊ฐ€ ์ ์ง„์ ์œผ๋กœ ์ปค์ง€๋Š” ๊ฐ€์žฅ ๊ธด ๋ถ€๋ถ„์ง‘ํ•ฉ์˜ ๊ธธ์ด ์˜ˆ๋ฅผ ๋“ค์–ด {4, 8, 1, 2, 5}๋ผ๋Š” ์ˆ˜์—ด์ด ์žˆ๋‹ค๋ฉด {1, 2, 5}์˜ ๊ธธ์ด๊ฐ€ 3์œผ๋กœ ์ œ์ผ ๊ธธ๋‹ค. ์ ‘๊ทผ๋ฐฉ๋ฒ• 1. Brute Force ๋ชจ๋“  ๋ถ€๋ถ„์ง‘ํ•ฉ์„ ๊ตฌํ•˜๊ณ , ๊ฐ๊ฐ์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ์ด ์ฆ๊ฐ€์ˆ˜์—ด์ธ์ง€ ํŒ๋ณ„ ๋ชจ๋“  ๋ถ€๋ถ„์ง‘ํ•ฉ์˜ ๊ฐœ์ˆ˜๋Š” 2^n์ด๋ฏ€๋กœ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(2^n)์ด ๋œ๋‹ค. 2. DP int[] DP = new int[N+1] ์ƒ์„ฑ DP[i]๋Š” A[i]๊ฐ€ ๋ถ€๋ถ„์ง‘ํ•ฉ ์ˆ˜์—ด์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ์ผ ๋•Œ ์ตœ์žฅ๊ธธ์ด(์ตœ์ ํ•ด)๋ฅผ ์ €์žฅํ•œ๋‹ค. ๋ฐ–์˜ for๋ฌธ์€ N๋ฒˆ, ์•ˆ์˜ for๋ฌธ์€ i-1๋ฒˆ ๋Œ๊ธฐ๋•Œ๋ฌธ์— ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(2^n)์ด ๋œ๋‹ค. int N = 5;// A์˜ ๊ธธ์ด int[] A = {4, 8, 1, 2, 5}; int[] DP = ..