[DevOps] SonarQube๋ž€?
ยท
DevOps
์†Œ๋‚˜ํ๋ธŒ๋Š” ์ •์  ์ฝ”๋“œ ๋ถ„์„ ๋„๊ตฌ ์ค‘ ํ•˜๋‚˜๋กœ ์šฐ์„  ์ •์  ๋ถ„์„์— ๋Œ€ํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.์ •์  ๋ถ„์„์ด๋ž€?์ •์  ๋ถ„์„์€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ๊ฒ€์‚ฌํ•จ์—ฌ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ถ„์„ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋Š” ์ฝ”๋“œ ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์ฝ”๋“œ ๋ฒ ์ด์Šค๊ฐ€ ๊ทœ์ •์„ ์ค€์ˆ˜ํ•˜๊ณ  ์•ˆ์ „ํ•˜๋„๋ก ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์ •์  ๋ถ„์„ ์ฃผ์š” ํŠน์ง•๊ตฌ๋ถ„๋‚ด์šฉ์ฝ”๋“œ ๊ฒ€์‚ฌ์ฝ”๋“œ์˜ ๋ฌธ๋ฒ•, ์Šคํƒ€์ผ, ์ž ์žฌ์  ๋ฒ„๊ทธ, ๋ณด์•ˆ ์ทจ์•ฝ์  ๋“ฑ์„ ์ฐพ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ฝ”๋“œ์˜ ๋™์ž‘์„ ์ดํ•ดํ•˜์ง€ ์•Š๊ณ ๋„ ๊ฐ€๋Šฅํ•œ ์ผ์ž…๋‹ˆ๋‹ค.๋„๊ตฌ ์‚ฌ์šฉ์ •์  ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋„๊ตฌ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.์ž๋™ํ™”์ •์  ๋ถ„์„ ๋„๊ตฌ๋Š” ์ง€์†์  ํ†ตํ•ฉ(CI) ์‹œ์Šคํ…œ์— ํ†ตํ•ฉ๋˜์–ด ์ž๋™์œผ๋กœ ์ฝ”๋“œ ํ’ˆ์งˆ์„ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์ดˆ๊ธฐ ๋ฐœ๊ฒฌ์ฝ”๋“œ ์ž‘์„ฑ ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ๋ฒ„๊ทธ์™€ ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์–ด, ๊ฐœ๋ฐœ ๋น„..
[๋ฐฑ์ค€] 1753. ์ตœ๋‹จ๊ฒฝ๋กœ/Python - ๊ณจ๋“œ4
ยท
Coding Test/Algorithms
โ“๋ฌธ์ œ์„ฑ๋Šฅ ์š”์•ฝ๋ฉ”๋ชจ๋ฆฌ: 136204 KB, ์‹œ๊ฐ„: 380 ms๋ถ„๋ฅ˜๋‹ค์ต์ŠคํŠธ๋ผ, ๊ทธ๋ž˜ํ”„ ์ด๋ก , ์ตœ๋‹จ ๊ฒฝ๋กœ ๋ฌธ์ œ ์„ค๋ช…๋ฐฉํ–ฅ๊ทธ๋ž˜ํ”„๊ฐ€ ์ฃผ์–ด์ง€๋ฉด ์ฃผ์–ด์ง„ ์‹œ์ž‘์ ์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ์ •์ ์œผ๋กœ์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ๋‹จ, ๋ชจ๋“  ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜๋Š” 10 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋‹ค.โœ๐Ÿปํ’€์ด์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ์ธ์ ‘ํ–‰๋ ฌ๊ณผ ์ธ์ ‘๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ธ์ ‘ ํ–‰๋ ฌ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(V²)์ด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(E * logV)์ด ๋˜๋ฏ€๋กœ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ’€๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค์ต์ŠคํŠธ๋ผ๋Š” Heap์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋น ๋ฆ…๋‹ˆ๋‹ค.heapq๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด pq๋ฅผ ์ƒ์„ฑํ•ด (๊ฐ€์ค‘์น˜, ์‹œ์ž‘ ์ •์ ) ์Œ์œผ๋กœ ํž™ํ์— ๋„ฃ์–ด์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  dist๋Š” ๊ฐ ์ •์ ์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ํ…Œ์ด๋ธ”์„ ..
[DevOps] CI/CD๋ž€?
ยท
DevOps
CI/CD๋ž€?CI/CD๋Š” Continuous Integration(์ง€์†์  ํ†ตํ•ฉ)๊ณผ Continuous Delivery/Deployment(์ง€์†์  ์ „๋‹ฌ/๋ฐฐํฌ)์˜ ์•ฝ์ž์ด๋‹ค.Continuous Integration(CI)๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ž์ฃผ ํ†ตํ•ฉํ•˜๊ณ , ์ด๋ฅผ ์ž๋™์œผ๋กœ ํ…Œ์ŠคํŠธ ๋ฐ ๊ฒ€์ฆํ•˜์—ฌ ์‹ ์†ํ•˜๊ฒŒ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๋Š” ํ”„๋กœ์„ธ์Šค์ด๋‹ค.CI์˜ ๋ชฉํ‘œ๋Š” ์ฝ”๋“œ ์ถฉ๋Œ ๋ฐฉ์ง€, ๋น ๋ฅธ ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„ ์ œ๊ณต, ์ฝ”๋“œ ํ’ˆ์งˆ ํ–ฅ์ƒ์ด๋‹ค.Continuous Delivery(CD)CI ๊ณผ์ • ์ดํ›„, ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•œ ์ฝ”๋“œ๋ฅผ ์Šคํ…Œ์ด์ง• ํ™˜๊ฒฝ๊นŒ์ง€ ์ž๋™์œผ๋กœ ์ „๋‹ฌํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์ด๋‹ค.๋ฆด๋ฆฌ์Šค๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์ค€๋น„ํ•˜๊ณ , ์ˆ˜๋™ ๊ฐœ์ž… ์—†์ด ๋ฐฐํฌ ๊ฐ€๋Šฅ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ด๋‹ค.Continuous Deployment(CD)Coninuous Delivery์˜ ํ™•์žฅ์œผ๋กœ, ํ…Œ์ŠคํŠธ๋ฅผ ..
[DevOps] Docker๋กœ Jenkins ์„ค์น˜ํ•˜๊ธฐ
ยท
DevOps
ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝJenkins๋ฅผ ์„ค์น˜๋งŒ ํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๋กœ์ปฌํ™˜๊ฒฝ์—์„œ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.Jenkins ์‹คํ–‰docker.sock์—์„œ ๊ถŒํ•œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์–ด์„œ ์‚ฌ์šฉ์ž๋ฅผ root๋กœ ์ง€์ •ํ•˜์—ฌ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.$ docker run -d --name jenkins --restart=on-failure \-p 8080:8080 -v /var/jenkins_home:/var/jenkins_home \-v /var/run/docker.sock:/var/run/docker.sock -e TZ=Asia/Seoul \-u root jenkins/jenkins:2.479.3-lts-jdk17์ดˆ๊ธฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ์„ค์ •๋กœ์ปฌ์—์„œ ์ง„ํ–‰ํ•˜์˜€์œผ๋ฏ€๋กœ localhost:8080๋กœ ์ ‘์†ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋กœ์ปฌ ํ™˜๊ฒฝ์ด ์•„๋‹Œ ๊ฒฝ์šฐ์—๋Š” :8080์œผ๋กœ ์ ‘์†ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.์ ‘์†ํ•˜..
[๋ฐฑ์ค€] 1449. ์ˆ˜๋ฆฌ๊ณต ํ•ญ์Šน
ยท
Coding Test/Algorithms
โ“๋ฌธ์ œ์„ฑ๋Šฅ ์š”์•ฝ๋ฉ”๋ชจ๋ฆฌ: 32412 KB, ์‹œ๊ฐ„: 40 ms๋ถ„๋ฅ˜๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ •๋ ฌ๋ฌธ์ œ ์„ค๋ช…ํ•ญ์Šน์ด๋Š” ํ’ˆ์งˆ์ด ์‹ฌ๊ฐํ•˜๊ฒŒ ๋‚˜์œ ์ˆ˜๋„ ํŒŒ์ดํ”„ ํšŒ์‚ฌ์˜ ์ˆ˜๋ฆฌ๊ณต์ด๋‹ค. ํ•ญ์Šน์ด๋Š” ์„ธ์ค€ ์ง€ํ•˜์ฒ  ๊ณต์‚ฌ์—์„œ ๋ฌผ์ด ์ƒŒ๋‹ค๋Š” ์†Œ์‹์„ ๋“ฃ๊ณ  ์ˆ˜๋ฆฌ๋ฅผ ํ•˜๋Ÿฌ ๊ฐ”๋‹ค.ํŒŒ์ดํ”„์—์„œ ๋ฌผ์ด ์ƒˆ๋Š” ๊ณณ์€ ์‹ ๊ธฐํ•˜๊ฒŒ๋„ ๊ฐ€์žฅ ์™ผ์ชฝ์—์„œ ์ •์ˆ˜๋งŒํผ ๋–จ์–ด์ง„ ๊ฑฐ๋ฆฌ๋งŒ ๋ฌผ์ด ์ƒŒ๋‹ค.ํ•ญ์Šน์ด๋Š” ๊ธธ์ด๊ฐ€ L์ธ ํ…Œ์ดํ”„๋ฅผ ๋ฌดํ•œ๊ฐœ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.ํ•ญ์Šน์ด๋Š” ํ…Œ์ดํ”„๋ฅผ ์ด์šฉํ•ด์„œ ๋ฌผ์„ ๋ง‰์œผ๋ ค๊ณ  ํ•œ๋‹ค. ํ•ญ์Šน์ด๋Š” ํ•ญ์ƒ ๋ฌผ์„ ๋ง‰์„ ๋•Œ, ์ ์–ด๋„ ๊ทธ ์œ„์น˜์˜ ์ขŒ์šฐ 0.5๋งŒํผ ๊ฐ„๊ฒฉ์„ ์ค˜์•ผ ๋ฌผ์ด ๋‹ค์‹œ๋Š” ์•ˆ ์ƒŒ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.๋ฌผ์ด ์ƒˆ๋Š” ๊ณณ์˜ ์œ„์น˜์™€, ํ•ญ์Šน์ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ…Œ์ดํ”„์˜ ๊ธธ์ด L์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ํ•ญ์Šน์ด๊ฐ€ ํ•„์š”ํ•œ ํ…Œ์ดํ”„์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ํ…Œ์ดํ”„๋ฅผ ์ž๋ฅผ ์ˆ˜ ์—†๊ณ , ํ…Œ์ดํ”„๋ฅผ ๊ฒน์ณ์„œ ๋ถ™..
[๋ฐฑ์ค€] 11399. ATM/Python - Silver4
ยท
Coding Test/Algorithms
โ“๋ฌธ์ œhttps://www.acmicpc.net/problem/11399์„ฑ๋Šฅ ์š”์•ฝ๋ฉ”๋ชจ๋ฆฌ: 32412 KB, ์‹œ๊ฐ„: 36 ms๋ถ„๋ฅ˜๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ •๋ ฌ๋ฌธ์ œ ์„ค๋ช…์ธํ•˜์€ํ–‰์—๋Š” ATM์ด 1๋Œ€๋ฐ–์— ์—†๋‹ค. ์ง€๊ธˆ ์ด ATM์•ž์— N๋ช…์˜ ์‚ฌ๋žŒ๋“ค์ด ์ค„์„ ์„œ์žˆ๋‹ค. ์‚ฌ๋žŒ์€ 1๋ฒˆ๋ถ€ํ„ฐ N๋ฒˆ๊นŒ์ง€ ๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ ธ ์žˆ์œผ๋ฉฐ, i๋ฒˆ ์‚ฌ๋žŒ์ด ๋ˆ์„ ์ธ์ถœํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์€ Pi๋ถ„์ด๋‹ค.์‚ฌ๋žŒ๋“ค์ด ์ค„์„ ์„œ๋Š” ์ˆœ์„œ์— ๋”ฐ๋ผ์„œ, ๋ˆ์„ ์ธ์ถœํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์‹œ๊ฐ„์˜ ํ•ฉ์ด ๋‹ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด 5๋ช…์ด ์žˆ๊ณ , P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 ์ธ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž. [1, 2, 3, 4, 5] ์ˆœ์„œ๋กœ ์ค„์„ ์„ ๋‹ค๋ฉด, 1๋ฒˆ ์‚ฌ๋žŒ์€ 3๋ถ„๋งŒ์— ๋ˆ์„ ๋ฝ‘์„ ์ˆ˜ ์žˆ๋‹ค. 2๋ฒˆ ์‚ฌ๋žŒ์€ 1๋ฒˆ ์‚ฌ๋žŒ์ด ๋ˆ์„ ๋ฝ‘์„ ๋•Œ ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๊ธฐ ๋•Œ..