
โญ๏ธ ์๊ณ ๋ฆฌ์ฆ(7) : ๊ฐ์ด๋ฐ ๊ธ์ ๊ฐ์ ธ์ค๊ธฐ _ Lv.1 โญ๏ธ
01. ๋ฌธ์ ์ค๋ช
๐งฉ ๋จ์ด s์ ๊ฐ์ด๋ฐ ๊ธ์๋ฅผ ๋ฐํํ๋ ํจ์, solution์ ๋ง๋ค์ด ๋ณด์ธ์.
๐งฉ ๋จ์ด์ ๊ธธ์ด๊ฐ ์ง์๋ผ๋ฉด ๊ฐ์ด๋ฐ ๋ ๊ธ์๋ฅผ ๋ฐํํฉ๋๋ค.
๐งฉ ์๋ฅผ ๋ค์ด str์ด "abcde"์ด๋ฉด "c"๋ฅผ ๋ฐํํ๊ณ , "qwer"์ด๋ฉด "we"๋ฅผ ๋ฐํํ๋ฉด ๋ฉ๋๋ค.
๐ ์ ํ ์กฐ๊ฑด : s๋ ๊ธธ์ด๊ฐ 1 ์ด์, 100์ดํ์ธ ์คํธ๋ง์
๋๋ค.
02. " solution.js " ๋ฌธ์ ํ์ด๋ณด๊ธฐ
๐ก ๊ฐ์ด๋ฐ ๊ธ์๋ ๋ฌธ์์ด ๊ธธ์ด๊ฐ์ ๋ฐ์ผ๋ก ๋๋ด์ ๋ ์์น์์ ์๊ฐํ๊ณ , ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ ์ง์์ ํ์์ธ ๊ฒฝ์ฐ๋ฅผ ๋๋ ์ ๋ฌธ์์ด์ ๋ถ๋ถ ์ถ๋ ฅํด๋ณด์.
const str1 = "level"; const str2 = "updown"; function solution(s) { let strLength = Math.floor(s.length / 2); // ๊ฐ์ด๋ฐ ๊ธ์ ์ฐพ๊ธฐ : index ๊ฐ์ ํ์ฉํ๊ธฐ ์ํด '๋ด๋ฆผ' // ex) Math.floor(5 / 2) = 2 // Math.floor(6 / 2) = 3 return s.length % 2 ? s.substr(strLength, 1) : s.substr(strLength - 1, 2); } // ํ์์ด๋ฉด strLength๋ถํฐ ํ ๊ธ์ : ์ง์์ด๋ฉด (strLength - 1)๋ถํฐ ๋ ๊ธ์ console.log(solution(str1)) console.log(solution(str2))
___ ์ฐธ๊ณ ํ๊ธฐ ___
`1 Math.floor( ) : ์ฃผ์ด์ง ์ซ์์ ๊ฐ๊ฑฐ๋ ์์ ์ ์ ์ค์์ ๊ฐ์ฅ ํฐ ์๋ฅผ ๋ฐํํฉ๋๋ค. โ ๋ด๋ฆผ
`2 String.prototype.substr( ) : ์์ ์์น๋ถํฐ ๊ธธ์ด๊ฐ ๋งํผ์ ๋ฌธ์์ด์ ์ถ์ถํ์ฌ ๋ฐํํฉ๋๋ค. โ ์น ํ์ค์์ ์์ด์ก์ผ๋ ์์ง ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
03. ๋ค๋ฅธ ํ์ด ์์๋ณด๊ธฐ
# 1) substr( )๊ณผ Math.ceil( ), ์ผํญ ์ฐ์ฐ์ ํ์ฉํ๊ธฐ
const str1 = "level"; const str2 = "updown"; function solution(s) { return s.substr(Math.ceil(s.length / 2) - 1, s.length % 2 === 0 ? 2 : 1); // ์์ ํ์ด๋ฅผ ํ ๋ฌธ์ฅ์ผ๋ก ํฉ์ณ์ ๊ตฌ์ฑํจ } // ๊ฐ์ด๋ฐ ๊ธ์ ์ฐพ๊ธฐ : index ๊ฐ์ ํ์ฉํ๊ธฐ ์ํด '์ฌ๋ฆผ' // ex) Math.floor(5 / 2) = 3 // Math.floor(6 / 2) = 3 console.log(solution(str1)) console.log(solution(str2))
___ ์ฐธ๊ณ ํ๊ธฐ ___
`1 Math.ceil( ) : ์ฃผ์ด์ง ์ซ์๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ์ซ์ ์ค ๊ฐ์ฅ ์์ ์ซ์๋ฅผ integer ๋ก ๋ฐํํฉ๋๋ค. โ ์ฌ๋ฆผ
`2 ์กฐ๊ฑด(์ผํญ) ์ฐ์ฐ์ : ์์์๋ถํฐ ์กฐ๊ฑด๋ฌธ, ๋ฌผ์ํ(?), ์กฐ๊ฑด๋ฌธ์ด ์ฐธ(truthy)์ผ ๊ฒฝ์ฐ ์คํํ ํํ์, ์ฝ๋ก (:), ์กฐ๊ฑด๋ฌธ์ด ๊ฑฐ์ง(false)์ผ ๊ฒฝ์ฐ ์คํํ ํํ์์ด ๋ฐฐ์น๋ฉ๋๋ค.
# 2) Math.floor( )์ ์ผํญ ์ฐ์ฐ์๋ฅผ ํ์ฉํ ๋ค๋ฅธ ํ์ด
const str1 = "level"; const str2 = "updown"; function solution(s) { let center = Math.floor(s.length / 2); return s.length % 2 === 1 ? s[center] : s[center-1] + s[center]; } // ํ์์ด๋ฉด s[center] ํ ๊ธ์ : ์ง์์ด๋ฉด s[center-1]์ s[center] ๋ ๊ธ์ console.log(solution(str1)) console.log(solution(str2))
# 3) ๋ฌธ์์ด์ ๊ธธ์ด์ ์ผํญ ์ฐ์ฐ์ ํ์ฉํ๊ธฐ
const str1 = "level"; const str2 = "updown"; function solution(s) { let x = ( s.length - 1 ) / 2; // ex) Math.floor(5 - 1) / 2 = 2 // Math.floor(6 - 1) / 2 = 2.5 return x % 1 ? ( s[ x - 0.5 ] + s[ x + 0.5 ]) : s[x]; } // ์ง์์ธ ๊ฒฝ์ฐ x % 1 = 0.5 โ ๋๋จธ์ง๊ฐ ์๊น // ๋๋จธ์ง๊ฐ ์์ผ๋ฉด s[ x - 0.5 ]์ s[ x + 0.5 ] ๋ ๊ธ์ : ๋๋จธ์ง๊ฐ ์์ผ๋ฉด s[x] ํ ๊ธ์ console.log(solution(str1)) console.log(solution(str2))
# 4) ํ์ฉํ๊ธฐ
const str1 = "level"; const str2 = "updown"; function solution(s) { let answer = 0; if ( s.length % 2 == 1){ // ํ์์ด๋ฉด, answer = s.charAt( s.length / 2 ); // charAt( )์ 0๊ณผ ๋ฌธ์์ด์ ๊ธธ์ด - 1 ์ฌ์ด์ ์ ์๊ฐ์ ๋งค๊ฐ๋ณ์๋ก ๊ฐ์ง๋ค๊ณ ์ ์๋์ด ์๋๋ฐ, 2.5 ์ ๊ฐ์ ๋ฃ์ด๋ ์ถ๋ ฅ๋จ. } else { answer = s.substring( s.length / 2 -1, s.length / 2 +1 ); } return answer; } console.log(solution(str1)) console.log(solution(str2))
___ ์ฐธ๊ณ ํ๊ธฐ ___
`1 String.prototype.charAt( ) : ๋ฌธ์์ด์์ ํน์ ์ธ๋ฑ์ค์ ์์นํ๋ ์ ๋์ฝ๋ ๋จ์ผ๋ฌธ์๋ฅผ ๋ฐํํฉ๋๋ค.
`2 String.prototype.substring( ) : string ๊ฐ์ฒด์ ์์ ์ธ๋ฑ์ค๋ถํฐ ์ข
๋ฃ ์ธ๋ฑ์ค ์ ๊น์ง ๋ฌธ์์ด์ ๋ถ๋ถ ๋ฌธ์์ด์ ๋ฐํํฉ๋๋ค.
'Algorithm_JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๊ณ ๋ฆฌ์ฆ(9) : ๋๋จธ์ง๊ฐ 1์ด ๋๋ ์ ์ฐพ๊ธฐ _ Lv.1 (4) | 2022.11.04 |
---|---|
์๊ณ ๋ฆฌ์ฆ(8) : ์์ธ์์ ๊น์๋ฐฉ ์ฐพ๊ธฐ _ Lv.1 (1) | 2022.11.03 |
์๊ณ ๋ฆฌ์ฆ(6) : ๋ฌธ์์ด์ ์ ์๋ก ๋ฐ๊พธ๊ธฐ _ Lv.1 (2) | 2022.11.02 |
์๊ณ ๋ฆฌ์ฆ(5) : ์๋ฐ์๋ฐ์๋ฐ์๋ฐ์๋ฐ์? _ Lv.1 (1) | 2022.10.31 |
์๊ณ ๋ฆฌ์ฆ(4) : ์ง์์ ํ์ _ Lv.1 (1) | 2022.10.31 |
๋๊ธ