Go : ๊ณ ๋ฃจํ‹ด(goroutine), ์ฑ„๋„(channels)

๊ฐœ์š” ๊ณ ๋ฃจํ‹ด(goroutine)๊ณผ ์ฑ„๋„(channel)์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž ๊ณ ๋ฃจํ‹ด(goroutine) ๊ณ ๋ฃจํ‹ด์€ Go๋Ÿฐํƒ€์ž„์—์„œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ์ด์šฉํ•œ ๋™์‹œ์„ฑ์„ ์ง€์›ํ•˜๋Š” ๊ฒฝ๋Ÿ‰ ๊ฐ€์ƒ ์“ฐ๋ ˆ๋“œ์ด๋‹ค. ๊ฐ€์ƒ ์“ฐ๋ ˆ๋“œ๋ผ๋Š” ๊ฒƒ์€ ์‹ค์ œ๋กœ OS๋ ˆ๋ฒจ์—์„œ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜(Go)๋ ˆ๋ฒจ์—์„œ ๊ฐ€์ƒ์˜ ์“ฐ๋ ˆ๋“œ๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋‹ˆ ์ฃผ์˜ํ•˜์ž ๋Ÿฐํƒ€์ž„์—์„œ๋งŒ ๋™์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— main ๋Ÿฐํƒ€์ž„์ด ์ข…๋ฃŒ๋˜๋ฉด ๋ชจ๋“  ๊ณ ๋ฃจํ‹ด์ด ์ข…๋ฃŒ๋˜๋‹ˆ ์ฃผ์˜ํ•˜์ž go ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด ๊ณ ๋ฃจํ‹ด์„ ์„ ์–ธํ•œ๋‹ค ๋‹ค์Œ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด์„œ ๊ณ ๋ฃจํ‹ด์˜ ์‚ฌ์šฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž import ( "fmt" "time" ) func main() { // go ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด ๊ณ ๋ฃจํ‹ด ์ƒ์„ฑ -> ๋™์‹œ์— ์‹คํ–‰๋จ. ์ „์ฒด ์ถœ๋ ฅ์„ ๋ณด๋ฉด์„œ ์ดํ•ดํ•ด๋ณด์ž go bar("foo") bar("bar") /..

Go 2022. 3. 20. 15:27
Go ๊ธฐ๋ณธ ๋ฌธ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž

๊ฐœ์š” go ์–ธ์–ด ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž ๋‹ค์Œ ๋ชฉ์ฐจ๋กœ ์ง„ํ–‰๋˜๋ฉฐ ๋‹ค๋ฅธ ์–ธ์–ด๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๊ฒฝํ—˜ํ•ด๋ณธ ์‚ฌ๋žŒ ๋Œ€์ƒ์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค ๊ฐœ์š” ๋ณ€์ˆ˜, ์ƒ์ˆ˜ ์„ ์–ธ(+์ถ•์•ฝํ˜• ์„ ์–ธ) ํƒ€์ž… ํ•จ์ˆ˜ ์„ ์–ธ(ignore value(_), defer, export function) ์กฐ๊ฑด๋ฌธ(if, switch) ๋ฐ˜๋ณต๋ฌธ(for) pointer(*) ๋ฐฐ์—ด(slice, array) ๋ณ€์ˆ˜, ์ƒ์ˆ˜ ์„ ์–ธ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ƒ์ˆ˜๋Š” const, ๋ณ€์ˆ˜๋Š” var ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด ์„ ์–ธํ•œ๋‹ค ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ณ€์ˆ˜, ์ƒ์ˆ˜ ์„ ์–ธ๋„ ๊ฐ€๋Šฅํ•œ๋ฐ, ์ด๋Š” ์•„๋ž˜ ์ฝ”๋“œ๋กœ ์‚ดํŽด๋ณด์ž // ๊ธฐ๋ณธ ์„ ์–ธ var age = 23 var name string name = "mokhs" // ๋ณ€์ˆ˜ ์ถ•์•ฝํ˜• ์„ ์–ธ : ์•„๋ž˜์„œ ์ž์„ธํžˆ ์•Œ์•„๋ณด์ž role := "Backend Engineer" // ์ƒ์ˆ˜ ์„ ์–ธ ..

Go 2022. 3. 18. 23:33
[๋ฐฑ์ค€] 7576 : ํ† ๋งˆํ†  - java [์ž๋ฐ”]

https://www.acmicpc.net/problem/7576 7576๋ฒˆ: ํ† ๋งˆํ†  ์ฒซ ์ค„์—๋Š” ์ƒ์ž์˜ ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋‘ ์ •์ˆ˜ M,N์ด ์ฃผ์–ด์ง„๋‹ค. M์€ ์ƒ์ž์˜ ๊ฐ€๋กœ ์นธ์˜ ์ˆ˜, N์€ ์ƒ์ž์˜ ์„ธ๋กœ ์นธ์˜ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋‹จ, 2 ≤ M,N ≤ 1,000 ์ด๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ๋Š” ํ•˜๋‚˜์˜ ์ƒ์ž์— ์ €์žฅ๋œ ํ† ๋งˆํ†  www.acmicpc.net ์ดํ•ด ํ’€์ด์— ์•ž์„œ ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•ด๋ณด์ž ํ† ๋งˆํ† ์˜ ์ต์€ ์ƒํƒœ๊ฐ€ 1์ดˆ๋งˆ๋‹ค 1์นธ์”ฉ ์ „์ด๋˜๋Š” ์ƒํ™ฉ์ด๊ณ  ์ „์ฒด ํ† ๋งˆํ† ์— ์ „์ด๋˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์ตœ์†Œ ์‹œ๊ฐ„์„ ์ถœ๋ ฅํ•ด์•ผํ•œ๋‹ค ๊ฒฐ๊ตญ ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•ด์•ผํ•˜๊ณ , ๊ฐ ์ขŒํ‘œ์— ์ตœ์†Œ ์‹œ๊ฐ„์„ ๊ธฐ๋กํ•ด์•ผํ•˜๋ฏ€๋กœ BFS๋ฅผ ์ด์šฉํ•ด์•ผํ•œ๋‹ค BFS๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ cost๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ํƒ์ƒ‰ ์ข…๋ฃŒ ํ›„์— cost ์ค‘ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค ํ’€์ด ์—ฌ๊ธฐ์„œ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ๋Š” ์ต์€ ํ† ๋งˆํ†  ์—ฌ๋ถ€๋กœ ํ•œ๋‹ค = 1..

PS/๋ฐฑ์ค€ 2022. 3. 2. 11:55
[๋ฐฑ์ค€] 2667 : ๋‹จ์ง€๋ฒˆํ˜ธ๋ถ™์ด๊ธฐ - java [์ž๋ฐ”]

https://www.acmicpc.net/problem/2667 2667๋ฒˆ: ๋‹จ์ง€๋ฒˆํ˜ธ๋ถ™์ด๊ธฐ ๊ณผ ๊ฐ™์ด ์ •์‚ฌ๊ฐํ˜• ๋ชจ์–‘์˜ ์ง€๋„๊ฐ€ ์žˆ๋‹ค. 1์€ ์ง‘์ด ์žˆ๋Š” ๊ณณ์„, 0์€ ์ง‘์ด ์—†๋Š” ๊ณณ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ฒ ์ˆ˜๋Š” ์ด ์ง€๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์—ฐ๊ฒฐ๋œ ์ง‘์˜ ๋ชจ์ž„์ธ ๋‹จ์ง€๋ฅผ ์ •์˜ํ•˜๊ณ , ๋‹จ์ง€์— ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์ด๋ ค ํ•œ๋‹ค. ์—ฌ www.acmicpc.net ์ดํ•ด ํ•ด๋‹น ๋ฌธ์ œ๋Š” 2์ฐจ์› ๋ฐฐ์—ด๋กœ ์ฃผ์–ด์ง€๋Š” map์„ ํƒ์ƒ‰ํ•˜์—ฌ ์—ฐ๊ฒฐ๋œ ์ง€์—ญ์„ ์ฐพ๋Š” ๋ฌธ์ œ์ด๋‹ค. ์ฆ‰ map์„ ์ˆœํšŒํ•˜๋ฉฐ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ์ขŒํ‘œ๊ฐ€ ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ์ขŒํ‘œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ธ์ ‘ํ•œ ์ขŒํ‘œ๋ฅผ ๋ชจ๋‘ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ด๋ ‡๊ฒŒํ•˜๋ฉด ์—ฐ๊ฒฐ๋œ ์ง€์—ญ์€ ๋ชจ๋‘ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ๋  ๊ฒƒ์ด๊ณ  map์„ ์ˆœํšŒ ์ค‘์— ๋ฐฉ๋ฌธ๋˜์ง€ ์•Š์€ ์ขŒํ‘œ๋ฅผ ์ฐพ๋Š”๋‹ค๋ฉด ์ƒˆ๋กœ์šด ์ง€์—ญ์˜ ๋ฐœ๊ฒฌ์„ ์˜๋ฏธํ•œ๋‹ค. ๋”ฐ๋ผ์„œ map์„ ์ˆœํšŒํ•˜๋ฉฐ ๋ฐฉ๋ฌธ๋˜์ง€ ์•Š์€ ์ขŒํ‘œ๋ฅผ ์ฐพ์„ ์‹œ ํ•ด๋‹น ์ขŒํ‘œ๋ฅผ ์‹œ์ž‘..

PS/๋ฐฑ์ค€ 2022. 2. 28. 18:32
[๋ฐฑ์ค€] 11724 : ์—ฐ๊ฒฐ ์š”์†Œ์˜ ๊ฐœ์ˆ˜ - java [์ž๋ฐ”]

https://www.acmicpc.net/problem/11724 11724๋ฒˆ: ์—ฐ๊ฒฐ ์š”์†Œ์˜ ๊ฐœ์ˆ˜ ์ฒซ์งธ ์ค„์— ์ •์ ์˜ ๊ฐœ์ˆ˜ N๊ณผ ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜ M์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ M๊ฐœ์˜ ์ค„์— ๊ฐ„์„ ์˜ ์–‘ ๋์  u์™€ v๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ u, v ≤ N, u ≠ v) ๊ฐ™์€ ๊ฐ„์„ ์€ ํ•œ ๋ฒˆ๋งŒ ์ฃผ www.acmicpc.net ์ดํ•ด ๋ฌธ์ œ ํ’€์ด์— ์•ž์„œ ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•ด๋ณด์ž. ์—ฐ๊ฒฐ ์š”์†Œ(Connected Component)๋Š” ์—ฐ๊ฒฐ๋œ ์ •์ ์˜ ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•œ๋‹ค. ๋‹ค์Œ ์ด๋ฏธ์ง€์—์„œ์˜ ์—ฐ๊ฒฐ ์š”์†Œ๋Š” 4๊ฐœ์ด๋‹ค. ๋”ฐ๋ผ์„œ ํ•ด๋‹น ๋ฌธ์ œ๋Š” ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰์„ ํ†ตํ•ด ์—ฐ๊ฒฐ๋œ ์ •์ ์„ ๋ชจ๋‘ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌํ•˜๊ณ  ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ ๋˜์ง€ ์•Š์€ ์ •์ ์ด ๋ฐœ๊ฒฌ๋˜๋ฉด ์ƒˆ๋กœ์šด ์—ฐ๊ฒฐ ์š”์†Œ์ž„์„ ์˜๋ฏธํ•œ๋‹ค. ํ’€์ด ์ „์ฒด ๋…ธ๋“œ(1~N)๋ฅผ ์ˆœํšŒ..

PS/๋ฐฑ์ค€ 2022. 2. 28. 17:24
[๋ฐฑ์ค€] 2252 : ์ค„ ์„ธ์šฐ๊ธฐ - java [์ž๋ฐ”]

https://www.acmicpc.net/problem/2252 2252๋ฒˆ: ์ค„ ์„ธ์šฐ๊ธฐ ์ฒซ์งธ ์ค„์— N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)์ด ์ฃผ์–ด์ง„๋‹ค. M์€ ํ‚ค๋ฅผ ๋น„๊ตํ•œ ํšŒ์ˆ˜์ด๋‹ค. ๋‹ค์Œ M๊ฐœ์˜ ์ค„์—๋Š” ํ‚ค๋ฅผ ๋น„๊ตํ•œ ๋‘ ํ•™์ƒ์˜ ๋ฒˆํ˜ธ A, B๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด๋Š” ํ•™์ƒ A๊ฐ€ ํ•™์ƒ B์˜ ์•ž์— ์„œ์•ผ ํ•œ๋‹ค๋Š” ์˜ www.acmicpc.net ํ’€์ด "์—ฐ๊ฒฐ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง„ N๋ช…์˜ ํ•™์ƒ ์ค„ ์„ธ์šฐ๊ธฐ"๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋‹ค. => ์—ฐ๊ฒฐ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง„ ์ˆœํ™˜ํ•˜์ง€ ์•Š๋Š” ๋ฐฉํ–ฅ์„ฑ ๊ทธ๋ž˜ํ”„(DAG=๋ฐฉํ–ฅ์„ฑ ๋น„์ˆœํ™˜ ๊ทธ๋ž˜ํ”„)์—์„œ ๊ฐ ๋…ธ๋“œ๋ฅผ ์ค„ ์„ธ์šฐ์‹œ์˜ค. ์ด๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์œ„์ƒ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์ผ์น˜ํ•˜๋ฏ€๋กœ ์œ„์ƒ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•ด ํ’€์ดํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๊ฐ ๋…ธ๋“œ์˜ ์—ฐ๊ฒฐ ๋‹นํ•œ ์ •๋ณด๋ฅผ linked ๋ฐฐ์—ด์— ๋ฏธ๋ฆฌ ์ž…๋ ฅ ํ›„ ..

PS/๋ฐฑ์ค€ 2022. 2. 27. 12:06
[๋ฐฑ์ค€] 2805 : ๋‚˜๋ฌด ์ž๋ฅด๊ธฐ - java [์ž๋ฐ”]

https://www.acmicpc.net/problem/2805 2805๋ฒˆ: ๋‚˜๋ฌด ์ž๋ฅด๊ธฐ ์ฒซ์งธ ์ค„์— ๋‚˜๋ฌด์˜ ์ˆ˜ N๊ณผ ์ƒ๊ทผ์ด๊ฐ€ ์ง‘์œผ๋กœ ๊ฐ€์ ธ๊ฐ€๋ ค๊ณ  ํ•˜๋Š” ๋‚˜๋ฌด์˜ ๊ธธ์ด M์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) ๋‘˜์งธ ์ค„์—๋Š” ๋‚˜๋ฌด์˜ ๋†’์ด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‚˜๋ฌด์˜ ๋†’์ด์˜ ํ•ฉ์€ ํ•ญ์ƒ M๋ณด www.acmicpc.net ์ด ๊ธ€์€ ์ด๋ถ„ํƒ์ƒ‰์„ ์ด๋ฏธ ์•Œ๊ณ ์žˆ๋Š” ์‚ฌ๋žŒ์„ ๋Œ€์ƒ์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค. ์ด๋ถ„ํƒ์ƒ‰์„ ์ด์šฉํ•ด ์ตœ์ ์˜ ๊ฐ’์„ ์ฐพ์•„๋‚ธ๋‹ค. ์ด๋ถ„ํƒ์ƒ‰ ๋ฌธ์ œ์—์„œ๋Š” ๊ตฌํ•ด์•ผํ•˜๋Š” ๊ฐ’์„ ์ฐพ๊ณ  ํ•ด๋‹น ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ํ’€์ดํ•œ๋‹ค. ๋ณดํ†ต ์ •๋‹ต์„ ์š”๊ตฌํ•˜๋Š” ๊ฐ’๊ณผ ์ผ์น˜ํ•œ๋‹ค. ํ•ด๋‹น ๋ฌธ์ œ์—์„œ๋Š” K(์ ˆ๋‹จ๊ธฐ์— ์„ค์ •ํ•  ๋†’์ด์˜ ์ตœ๋Œ“๊ฐ’)์ด ๊ธฐ์ค€ ๊ฐ’์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋ณ€ํ™”ํ•˜๋Š” K๋ฅผ ๊ธฐ์ค€์œผ๋กœ totalSlicedHeight(์ž˜๋ ค์ง„ ๋‚˜๋ฌด ๊ธธ์ด์˜..

PS/๋ฐฑ์ค€ 2022. 2. 26. 20:02