Bibi's DevLog ๐ค๐
[Javascript] '๋ฌธ์์ด์ ๊ฐ์ด๋ฐ ๊ธ์ ๊ฐ์ ธ์ค๊ธฐ' ๋ฌธ์ ํ์ด ๋ณธ๋ฌธ
[Javascript] '๋ฌธ์์ด์ ๊ฐ์ด๋ฐ ๊ธ์ ๊ฐ์ ธ์ค๊ธฐ' ๋ฌธ์ ํ์ด
๋น๋น bibi 2020. 10. 11. 21:24์๋ณธ ์์ ๋ ์๋ ๋งํฌ์ ์์ต๋๋ค.
programmers.co.kr/learn/courses/30/lessons/12903(์ถ์ฒ : ํ๋ก๊ทธ๋๋จธ์ค)
๋ฌธ์ ์ค๋ช
๋จ์ด s์ ๊ฐ์ด๋ฐ ๊ธ์๋ฅผ ๋ฐํํ๋ ํจ์, solution์ ๋ง๋ค์ด ๋ณด์ธ์. ๋จ์ด์ ๊ธธ์ด๊ฐ ์ง์๋ผ๋ฉด ๊ฐ์ด๋ฐ ๋๊ธ์๋ฅผ ๋ฐํํ๋ฉด ๋ฉ๋๋ค.
์ ํ์ฌํญ
- s๋ ๊ธธ์ด๊ฐ 1 ์ด์, 100์ดํ์ธ ์คํธ๋ง์ ๋๋ค.
์ ์ถ๋ ฅ ์
s๊ฐ abcde์ผ ๋, return์ c
s๊ฐ qwer์ผ ๋, return์ we
์์ง ํจ์์ ์ธ์ ๋ฑ์ ์ฒด๊ณ์ ์ผ๋ก ๋ฐฐ์ฐ์ง๋ ์์์ใ
ํ์ฌ ์๊ฐ์ค์ธ ์๋ฐ์คํฌ๋ฆฝํธ ์
๋ฌธ๊ฐ์(์ธํ๋ฐ) ์ค์ต๋ฌธ์ ์ฒ๋ผ, ์ฝ์ ๋ฒ์ ์ผ๋ก ๋ง๋ค์ด ๋ณด์๋ค.
๋ด๊ฐ ์์ฑํ ์ฝ๋
(๊นํ : github.com/bibi6666667/learningJavascript/commit/c9ab0cb251667a2c8694c50aad7279946b34882a)
html ํ์ผ๋ก ์ ์ฅํ ๋ค์ ๋ธ๋ผ์ฐ์ ๋ก ์คํํ๋ฉด ๊ฐ์ด ์ฝ์ ์ฐฝ์ ์ถ๋ ฅ๋ฉ๋๋ค.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h2>์ฝ์ฝ์ ํ
์คํธ1</h2>
๊ธธ์ด 1์ด์, 100์ดํ์ธ ๋ฌธ์๋ฅผ ์
๋ ฅํด ์ฃผ์ธ์.<br>
๊ฐ์ด๋ฐ ๊ธ์๋ฅผ ๊ฐ์ ธ์ต๋๋ค. (์ฝ์ ๋ฒ์ )<br>
<input type="text" id="input">
<button onclick="testlength()">๊ฐ์ด๋ฐ ๊ธ์๋ฅผ ๋ณด์ฌ์ค</button>
<script>
function testlength() {
// ๋ฌธ์์ธ์ง ํ์ธ - ๋ฌธ์ ๊ธธ์ด ํ์ธ
var str = document.getElementById("input").value;
var len = str.length;
if (isNaN(str) === false){
console.log("์ซ์๊ฐ ์๋ ๋ฌธ์๋ฅผ ์
๋ ฅํด ์ฃผ์ธ์.")
} else if (len < 1 || len > 100) {
console.log("๊ธธ์ด 1์ด์, 100์ดํ์ธ ๊ธ์๋ก ์
๋ ฅํด ์ฃผ์ธ์.");
} else {
solution(str, len);
}
}
function solution(str, len) {
if (len % 2 === 1) {
console.log('ํ์ ๊ธ์!');
var sliceOdd = ((len + 1) / 2) - 1
var slicedOdd = str.slice(sliceOdd, sliceOdd + 1);
console.log(slicedOdd);
} else if (len % 2 === 0) {
console.log('์ง์ ๊ธ์!');
var sliceEven1 = (len / 2) - 1
var sliceEven2 = (len / 2) + 1
var slivedEven = str.slice(sliceEven1, sliceEven2);
console.log(slivedEven);
}
}
</script>
</body>
</html>
-
ํจ์ testlength()
document.getElementById(~).value;
์น ๋ฌธ์์์ id ๊ฐ์ด ~ ์ธ ๋์์ ๊ฐ์ ๊ฐ์ ธ์จ๋ค.(str)
str.length;
str์ ๊ธธ์ด(๊ธ์ ์) ๋ฅผ ๊ตฌํ๋ค.
isNaN()
is not a number์ ์ฝ์.
() ์์ ๊ฐ์ด ์ซ์์ด๋ฉด false๋ฅผ, ์ซ์๊ฐ ์๋๋ฉด true๋ฅผ ๋ฐํํ๋ค.
-
ํจ์ solution()
๊ธ์์๊ฐ ํ์์ธ์ง ์ง์์ธ์ง ํ๋ณํ๊ธฐ ์ํด,
๊ธ์ ์๋ฅผ 2๋ก ๋๋ ๋๋จธ์ง๊ฐ 1์ธ์ง(=ํ์) ์๋๋ฉด 0์ธ์ง(์ง์) ํ๋ณํ๋ค.
๊ธ์๋ฅผ ์๋ผ๋ด๋ ๋ฐ์๋ .slice() ๋ฅผ ํ์ฉ.
i. ํ์ ๋ฌธ์์ด์ผ ๋ (A.length % 2 === 1)
์๋ฅผ ๋ค์ด '๊ฐ์์ง'์ ๊ฐ์ 3(n)๊ธ์์ ํ์ ๋ฌธ์์ด์ ๊ฐ์ด๋ฐ ๊ธ์๋ 2๋ฒ์งธ ๊ธ์์ธ '์'์ด๋ค.
์ฆ (3+1)/2 = 2๋ฒ์งธ ๊ธ์, ๊ณต์ํํ๋ฉด (n+1)/2 ๋ฒ์งธ ๊ธ์๋ฅผ ๊ฐ์ ธ์์ผ ํ๋ค.
(์ด๋ (n+1)/2 ๋ฅผ a๋ผ๊ณ ํ์)
๊ทธ๋ฐ๋ฐ .slice()์ ๋ฌธ๋ฒ์ ๋ฐ๋ผ์ผ ํ๋ฏ๋ก,
/๊ฐ/์/์ง/ ์์ '์'๋ฅผ ์ถ๋ ฅํ๋ ค๋ฉด
์ฌ๋ผ์ด์ค 1๊ณผ 2 ์ฌ์ด, ์ฆ a-1๊ณผ a ์ฌ์ด ๊ฐ์ ๊ฐ์ ธ์์ผ ํ๋ค. (์ฒซ๋ฒ์งธ=0๋ฒ์งธ)
-> ์ฆ n๊ธ์์ ํ์ ๋ฌธ์์ด A์์ ๊ฐ์ด๋ฐ ๊ธ์๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด
A.slice( a -1 , a ); ๋ก ์ง์ ํด์ผ ํ๋ฉฐ,
์ด๋ a๋ (n+1)/2 ์ด๋ฏ๋ก A.slice( { (n+1)/2 } -1 , (n+1)/2 ); ๋ก ๋ฐ๊ฟ ์ธ ์ ์๋ค.
ii. ์ง์ ๋ฌธ์์ด์ผ ๋ (B.length % 2 === 0)
์๋ฅผ ๋ค์ด '์ค๋์ฐํ'๊ณผ ๊ฐ์ 4(m)๊ธ์์ ์ง์ ๋ฌธ์์ด์์ ๊ฐ์ด๋ฐ ๋ ๊ธ์๋ 2,3๋ฒ์งธ ๊ธ์์ธ '๋์ฐ'์ด๋ค.
์ฆ 4/2=2๋ฒ์งธ ๊ธ์์ 4/2+1=3๋ฒ์งธ ๊ธ์, ๊ณต์ํํ๋ฉด m/2๋ฒ์งธ ๊ธ์์ m/2+1๋ฒ์งธ ๊ธ์๋ฅผ ๊ฐ์ ธ์์ผ ํ๋ค.
(์ด๋ m/2๋ฅผ b๋ผ๊ณ ํ์)
์ญ์ .slice()์ ๋ฌธ๋ฒ์ ๋ฐ๋ผ์ผ ํ๋ฏ๋ก
/์ค/๋/์ฐ/ํ/ ์์ '๋์ฐ'๋ฅผ ์ถ๋ ฅํ๋ ค๋ฉด
์ฌ๋ผ์ด์ค 1๊ณผ 3 ์ฌ์ด, ์ฆ b-1๊ณผ b+1 ์ฌ์ด ๊ฐ์ ๊ฐ์ ธ์์ผ ํ๋ค. (์ฒซ๋ฒ์งธ=0๋ฒ์งธ)
-> ์ฆ m๊ธ์์ ์ง์ ๋ฌธ์์ด B์์ ๊ฐ์ด๋ฐ ๊ธ์๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด
B.slice( b-1, b+1 ); ๋ก ์ง์ ํด์ผ ํ๋ฉฐ,
์ด๋ b๋ m/2์ด๋ฏ๋ก B.slice( (m/2)-1, (m/2)+1 ); ๋ก ๋ฐ๊ฟ ์ธ ์ ์๋ค.
์๋ก ์๊ฒ ๋ ๊ฒ (๊ตฌ๊ธ๋ง์ ๋์)
isNaN()
์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ์/์ซ์ ํ๋ณ.
is not a number์ ์ค์ธ๋ง๋ก, ๊ดํธ ์์ ๋ด์ฉ์ด ์ซ์์ธ์ง ์ซ์๊ฐ ์๋์ง ํ๋ณํด์ค.
๊ดํธ ์์ด ์ซ์์ด๋ฉด false, ์ซ์๊ฐ ์๋๋ฉด true๋ฅผ ๋ฐํํจ.
'ํ๋ก๊ทธ๋๋ฐ > Javascript ์๋ฐ์คํฌ๋ฆฝํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ธํ๋ฐ] Javascript์ ๋ฌธ - ๋ฐ๋ณต๋ฌธ2 (break, continue, ์ด์ค๋ฃจํ) (0) | 2020.10.12 |
---|---|
[Javascript] '์์ ์ฐพ๊ธฐ' ๋ฌธ์ ํ์ด (0) | 2020.10.11 |
์ฐธ์กฐ ๊ฐ์ข ) ์ํ์ฝ๋ฉ : WEB2 Javascript - 16. ์กฐ๊ฑด๋ฌธ (0) | 2020.10.07 |
์ฐธ๊ณ ์๋ฃ ) Javascript์ ๋ฐ๋ณต๋ฌธ(loop) - mozilla ๋ฌธ์ (0) | 2020.10.07 |
์ฐธ์กฐ ๊ฐ์ข ) ์ํ์ฝ๋ฉ -WEB2 JavaScript - 7.๋ณ์์ ๋์ ์ฐ์ฐ์. (0) | 2020.10.07 |