๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Algorithm

(120)
[Programmers] ๋‚ด์  ๋ฌธ์ œ ๊ธธ์ด๊ฐ€ ๊ฐ™์€ ๋‘ 1์ฐจ์› ์ •์ˆ˜ ๋ฐฐ์—ด a, b๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. a์™€ b์˜ ๋‚ด์ ์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ, a์™€ b์˜ ๋‚ด์ ์€ a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] ์ž…๋‹ˆ๋‹ค. (n์€ a, b์˜ ๊ธธ์ด) ์ œํ•œ ์‚ฌํ•ญ a, b์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 1,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค. a, b์˜ ๋ชจ๋“  ์ˆ˜๋Š” -1,000 ์ด์ƒ 1,000 ์ดํ•˜์ž…๋‹ˆ๋‹ค. [1,2,3,4] [-3,-1,0,2] 3 [-1,0,1] [1,0,-1] -2 ๋‚˜์˜ ์ฝ”๋“œ def solution(a, b): t = 0 for i in range(len(a)): t += (a[i] * b[i]) return t
[Programmers] ๋กœ๋˜์˜ ์ตœ๊ณ  ์ˆœ์œ„์™€ ์ตœ์ € ์ˆœ์œ„ ๋ฌธ์ œ ๋กœ๋˜ 6/45(์ดํ•˜ '๋กœ๋˜'๋กœ ํ‘œ๊ธฐ)๋Š” 1๋ถ€ํ„ฐ 45๊นŒ์ง€์˜ ์ˆซ์ž ์ค‘ 6๊ฐœ๋ฅผ ์ฐ์–ด์„œ ๋งžํžˆ๋Š” ๋Œ€ํ‘œ์ ์ธ ๋ณต๊ถŒ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ๋กœ๋˜์˜ ์ˆœ์œ„๋ฅผ ์ •ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. 1 6๊ฐœ ๋ฒˆํ˜ธ๊ฐ€ ๋ชจ๋‘ ์ผ์น˜ 2 5๊ฐœ ๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ 3 4๊ฐœ ๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ 4 3๊ฐœ ๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ 5 2๊ฐœ ๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ 6(๋‚™์ฒจ) ๊ทธ ์™ธ ๋กœ๋˜๋ฅผ ๊ตฌ๋งคํ•œ ๋ฏผ์šฐ๋Š” ๋‹น์ฒจ ๋ฒˆํ˜ธ ๋ฐœํ‘œ์ผ์„ ํ•™์ˆ˜๊ณ ๋Œ€ํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ๋ฏผ์šฐ์˜ ๋™์ƒ์ด ๋กœ๋˜์— ๋‚™์„œ๋ฅผ ํ•˜์—ฌ, ์ผ๋ถ€ ๋ฒˆํ˜ธ๋ฅผ ์•Œ์•„๋ณผ ์ˆ˜ ์—†๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹น์ฒจ ๋ฒˆํ˜ธ ๋ฐœํ‘œ ํ›„, ๋ฏผ์šฐ๋Š” ์ž์‹ ์ด ๊ตฌ๋งคํ–ˆ๋˜ ๋กœ๋˜๋กœ ๋‹น์ฒจ์ด ๊ฐ€๋Šฅํ–ˆ๋˜ ์ตœ๊ณ  ์ˆœ์œ„์™€ ์ตœ์ € ์ˆœ์œ„๋ฅผ ์•Œ์•„๋ณด๊ณ  ์‹ถ์–ด ์กŒ์Šต๋‹ˆ๋‹ค. ์•Œ์•„๋ณผ ์ˆ˜ ์—†๋Š” ๋ฒˆํ˜ธ๋ฅผ 0์œผ๋กœ ํ‘œ๊ธฐํ•˜๊ธฐ๋กœ ํ•˜๊ณ , ๋ฏผ์šฐ๊ฐ€ ๊ตฌ๋งคํ•œ ๋กœ๋˜ ๋ฒˆํ˜ธ 6๊ฐœ๊ฐ€ 44, 1, 0, 0, 31 25๋ผ๊ณ  ๊ฐ€์ •ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹น์ฒจ ๋ฒˆํ˜ธ 6๊ฐœ๊ฐ€ 3..
[Programmers] ์‹ ๊ณ  ๊ฒฐ๊ณผ ๋ฐ›๊ธฐ ๋ฌธ์ œ ๋ฌธ์ œ ์„ค๋ช… ์‹ ์ž…์‚ฌ์› ๋ฌด์ง€๋Š” ๊ฒŒ์‹œํŒ ๋ถˆ๋Ÿ‰ ์ด์šฉ์ž๋ฅผ ์‹ ๊ณ ํ•˜๊ณ  ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ”์ผ๋กœ ๋ฐœ์†กํ•˜๋Š” ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋ฌด์ง€๊ฐ€ ๊ฐœ๋ฐœํ•˜๋ ค๋Š” ์‹œ์Šคํ…œ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฐ ์œ ์ €๋Š” ํ•œ ๋ฒˆ์— ํ•œ ๋ช…์˜ ์œ ์ €๋ฅผ ์‹ ๊ณ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ ๊ณ  ํšŸ์ˆ˜์— ์ œํ•œ์€ ์—†์Šต๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ์œ ์ €๋ฅผ ๊ณ„์†ํ•ด์„œ ์‹ ๊ณ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ ์œ ์ €๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์‹ ๊ณ ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ๋™์ผํ•œ ์œ ์ €์— ๋Œ€ํ•œ ์‹ ๊ณ  ํšŸ์ˆ˜๋Š” 1ํšŒ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. k๋ฒˆ ์ด์ƒ ์‹ ๊ณ ๋œ ์œ ์ €๋Š” ๊ฒŒ์‹œํŒ ์ด์šฉ์ด ์ •์ง€๋˜๋ฉฐ, ํ•ด๋‹น ์œ ์ €๋ฅผ ์‹ ๊ณ ํ•œ ๋ชจ๋“  ์œ ์ €์—๊ฒŒ ์ •์ง€ ์‚ฌ์‹ค์„ ๋ฉ”์ผ๋กœ ๋ฐœ์†กํ•ฉ๋‹ˆ๋‹ค. ์œ ์ €๊ฐ€ ์‹ ๊ณ ํ•œ ๋ชจ๋“  ๋‚ด์šฉ์„ ์ทจํ•ฉํ•˜์—ฌ ๋งˆ์ง€๋ง‰์— ํ•œ๊บผ๋ฒˆ์— ๊ฒŒ์‹œํŒ ์ด์šฉ ์ •์ง€๋ฅผ ์‹œํ‚ค๋ฉด์„œ ์ •์ง€ ๋ฉ”์ผ์„ ๋ฐœ์†กํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ „์ฒด ์œ ์ € ๋ชฉ๋ก์ด ["muzi", "frodo", "apeach", "neo"]์ด๊ณ , k ..
[Programmers] ๋ฌธ์ž์—ด ์••์ถ• ๋ฌธ์ œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์ „๋ฌธ๊ฐ€๊ฐ€ ๋˜๊ณ  ์‹ถ์€ "์–ดํ”ผ์น˜"๋Š” ๋ฌธ์ž์—ด์„ ์••์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ตœ๊ทผ์— ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ๋น„์†์‹ค ์••์ถ• ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๋ฌธ์ž์—ด์—์„œ ๊ฐ™์€ ๊ฐ’์ด ์—ฐ์†ํ•ด์„œ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์„ ๊ทธ ๋ฌธ์ž์˜ ๊ฐœ์ˆ˜์™€ ๋ฐ˜๋ณต๋˜๋Š” ๊ฐ’์œผ๋กœ ํ‘œํ˜„ํ•˜์—ฌ ๋” ์งง์€ ๋ฌธ์ž์—ด๋กœ ์ค„์—ฌ์„œ ํ‘œํ˜„ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ์˜ˆ๋กœ "aabbaccc"์˜ ๊ฒฝ์šฐ "2a2ba3c"(๋ฌธ์ž๊ฐ€ ๋ฐ˜๋ณต๋˜์ง€ ์•Š์•„ ํ•œ๋ฒˆ๋งŒ ๋‚˜ํƒ€๋‚œ ๊ฒฝ์šฐ 1์€ ์ƒ๋žตํ•จ)์™€ ๊ฐ™์ด ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์€ ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž๊ฐ€ ์ ์€ ๊ฒฝ์šฐ ์••์ถ•๋ฅ ์ด ๋‚ฎ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, "abcabcdede"์™€ ๊ฐ™์€ ๋ฌธ์ž์—ด์€ ์ „ํ˜€ ์••์ถ•๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. "์–ดํ”ผ์น˜"๋Š” ์ด๋Ÿฌํ•œ ๋‹จ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฌธ์ž์—ด์„ 1๊ฐœ ์ด์ƒ์˜ ๋‹จ์œ„๋กœ ์ž˜๋ผ์„œ ..
[BOJ] ์ˆ˜๊ฐ•์‹ ์ฒญ (#13414) ๋ฌธ์ œ ๊ตญ๋ฏผ๋Œ€ํ•™๊ต์—์„œ๋Š” ๋งค ํ•™๊ธฐ ์‹œ์ž‘ ์ „ ์ข…ํ•ฉ์ •๋ณด์‹œ์Šคํ…œ์—์„œ ์ˆ˜๊ฐ•์‹ ์ฒญ์„ ํ•œ๋‹ค. ๋งค ์ˆ˜๊ฐ•์‹ ์ฒญ๋งˆ๋‹ค ์•„์ฃผ ๋งŽ์€ ํ•™์ƒ๋“ค์ด ๋ชฐ๋ ค ์„œ๋ฒ„์— ๋งŽ์€ ๋ถ€ํ•˜๊ฐ€ ๊ฐ€๊ธฐ ๋•Œ๋ฌธ์—, ๊ตญ๋ฏผ๋Œ€ํ•™๊ต์—์„œ๋Š” ์ˆ˜๊ฐ•์‹ ์ฒญ ๋ถ€ํ•˜ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ๋„์ž…ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜์˜€๋‹ค. ์ƒˆ๋กœ์šด ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. ์ˆ˜๊ฐ•์‹ ์ฒญ ๋ฒ„ํŠผ์ด ํ™œ์„ฑํ™” ๋œ ํ›„, ์ˆ˜๊ฐ•์‹ ์ฒญ ๋ฒ„ํŠผ์„ ์กฐ๊ธˆ์ด๋ผ๋„ ๋นจ๋ฆฌ ๋ˆ„๋ฅธ ํ•™์ƒ์ด ๋Œ€๊ธฐ๋ชฉ๋ก์— ๋จผ์ € ๋“ค์–ด๊ฐ„๋‹ค. ์ด๋ฏธ ๋Œ€๊ธฐ์—ด์— ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ์ƒํƒœ์—์„œ ๋‹ค์‹œ ์ˆ˜๊ฐ•์‹ ์ฒญ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ๊ฒฝ์šฐ ๋Œ€๊ธฐ๋ชฉ๋ก์˜ ๋งจ ๋’ค๋กœ ๋ฐ€๋ ค๋‚œ๋‹ค. ์ž ์‹œ ํ›„ ์ˆ˜๊ฐ•์‹ ์ฒญ ๋ฒ„ํŠผ์ด ๋น„ํ™œ์„ฑํ™” ๋˜๋ฉด, ๋Œ€๊ธฐ๋ชฉ๋ก์—์„œ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ํ•™์ƒ๋ถ€ํ„ฐ ์ž๋™์œผ๋กœ ์ˆ˜๊ฐ•์‹ ์ฒญ์ด ์™„๋ฃŒ๋˜๋ฉฐ, ์ˆ˜๊ฐ• ๊ฐ€๋Šฅ ์ธ์›์ด ๊ฝ‰ ์ฐฐ ๊ฒฝ์šฐ ๋‚˜๋จธ์ง€ ๋Œ€๊ธฐ๋ชฉ๋ก์€ ๋ฌด์‹œํ•˜๊ณ  ์ˆ˜๊ฐ•์‹ ์ฒญ์„ ์ข…๋ฃŒํ•œ๋‹ค. ์œ„์˜ ํ‘œ๋Š” ์ตœ๋Œ€ ์ˆ˜๊ฐ• ๊ฐ€๋Šฅ ์ธ์›์ด 3๋ช…์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ..
[BOJ] ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ (#18111) ๋ฌธ์ œ ํŒ€ ๋ ˆ๋“œ์‹œํ”„ํŠธ๋Š” ๋Œ€ํšŒ ์ค€๋น„๋ฅผ ํ•˜๋‹ค๊ฐ€ ์ง€๋ฃจํ•ด์ ธ์„œ ์ƒŒ๋“œ๋ฐ•์Šค ๊ฒŒ์ž„์ธ ‘๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ’๋ฅผ ์ผฐ๋‹ค. ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ๋Š” 1 × 1 × 1(์„ธ๋กœ, ๊ฐ€๋กœ, ๋†’์ด) ํฌ๊ธฐ์˜ ๋ธ”๋ก๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ 3์ฐจ์› ์„ธ๊ณ„์—์„œ ์ž์œ ๋กญ๊ฒŒ ๋•…์„ ํŒŒ๊ฑฐ๋‚˜ ์ง‘์„ ์ง€์„ ์ˆ˜ ์žˆ๋Š” ๊ฒŒ์ž„์ด๋‹ค. ๋ชฉ์žฌ๋ฅผ ์ถฉ๋ถ„ํžˆ ๋ชจ์€ lvalue๋Š” ์ง‘์„ ์ง“๊ธฐ๋กœ ํ•˜์˜€๋‹ค. ํ•˜์ง€๋งŒ ๊ณ ๋ฅด์ง€ ์•Š์€ ๋•…์—๋Š” ์ง‘์„ ์ง€์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋•…์˜ ๋†’์ด๋ฅผ ๋ชจ๋‘ ๋™์ผํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ‘๋•… ๊ณ ๋ฅด๊ธฐ’ ์ž‘์—…์„ ํ•ด์•ผ ํ•œ๋‹ค. lvalue๋Š” ์„ธ๋กœ N, ๊ฐ€๋กœ M ํฌ๊ธฐ์˜ ์ง‘ํ„ฐ๋ฅผ ๊ณจ๋ž๋‹ค. ์ง‘ํ„ฐ ๋งจ ์™ผ์ชฝ ์œ„์˜ ์ขŒํ‘œ๋Š” (0, 0)์ด๋‹ค. ์šฐ๋ฆฌ์˜ ๋ชฉ์ ์€ ์ด ์ง‘ํ„ฐ ๋‚ด์˜ ๋•…์˜ ๋†’์ด๋ฅผ ์ผ์ •ํ•˜๊ฒŒ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‘ ์ข…๋ฅ˜์˜ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ขŒํ‘œ (i, j)์˜ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ๋ธ”๋ก์„ ์ œ๊ฑฐํ•˜์—ฌ ์ธ๋ฒคํ† ๋ฆฌ์— ๋„ฃ๋Š”๋‹ค. ์ธ๋ฒค..
[BOJ] ํƒ€๋…ธ์Šค (#20310) ๋ฌธ์ œ ์–ด๋Š ๋‚ , ํƒ€๋…ธ์Šค๋Š” 0๊ณผ 1๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด S$S$๋ฅผ ๋ณด์•˜๋‹ค. ์‹ ๊ธฐํ•˜๊ฒŒ๋„, S$S$๊ฐ€ ํฌํ•จํ•˜๋Š” 0์˜ ๊ฐœ์ˆ˜์™€ S$S$๊ฐ€ ํฌํ•จํ•˜๋Š” 1์˜ ๊ฐœ์ˆ˜๋Š” ๋ชจ๋‘ ์ง์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค. ๊ฐ‘์ž๊ธฐ ์‹ฌ์ˆ ์ด ๋‚œ ํƒ€๋…ธ์Šค๋Š” S$S$๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฌธ์ž ์ค‘ ์ ˆ๋ฐ˜์˜ 0๊ณผ ์ ˆ๋ฐ˜์˜ 1์„ ์ œ๊ฑฐํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด S′$S'$๋ฅผ ๋งŒ๋“ค๊ณ ์ž ํ•œ๋‹ค. S′$S'$๋กœ ๊ฐ€๋Šฅํ•œ ๋ฌธ์ž์—ด ์ค‘ ์‚ฌ์ „์ˆœ์œผ๋กœ ๊ฐ€์žฅ ๋น ๋ฅธ ๊ฒƒ์„ ๊ตฌํ•˜์‹œ์˜ค. ํ•ด์„ค ์ฝ”๋“œ num = list(str(input())) # 0 ๊ณผ 1 ์˜ ์ œ๊ฑฐ ํšŸ์ˆ˜ ๊ฐ๊ฐ ๊ตฌํ•ด์ฃผ๊ธฐ cnt = num.count('0')//2 knt = num.count('1')//2 # 0์€ ๋’ค์—์„œ๋ถ€ํ„ฐ 1์€ ์•ž์—์„œ๋ถ€ํ„ฐ ์ œ๊ฑฐํ•˜๊ธฐ for _ in range(cnt): num.pop(-(num[::-1].index('0'))-1) for _..
[Leetcode] Last Moment Before All Ants Fall Out of a Plank (#1503) ๋ฌธ์ œ We have a wooden plank of the length n units. Some ants are walking on the plank, each ant moves with a speed of 1 unit per second. Some of the ants move to the left, the other move to the right. When two ants moving in two different directions meet at some point, they change their directions and continue moving again. Assume changing directions does not take any additional time. When an ant ..