๐ ๋ฌธ์
๋ฌธ์์ด์ ์ ๋ ฅ๋ฐ์ ์์ด์๊ทธ๋จ์ธ์ง ์ฌ๋ถ๋ฅผ ๋ฆฌํดํด์ผ ํฉ๋๋ค. ์์ด์๊ทธ๋จ(isogram)์ ๊ฐ ์ํ๋ฒณ์ ํ๋ฒ์ฉ๋ง ์ด์ฉํด์ ๋ง๋ ๋จ์ด๋ ๋ฌธ๊ตฌ๋ฅผ ๋งํฉ๋๋ค.
โ ๏ธ ์ฃผ์์ฌํญ
- ๋น ๋ฌธ์์ด์ ์
๋ ฅ๋ฐ์ ๊ฒฝ์ฐ, true๋ฅผ ๋ฆฌํดํด์ผ ํฉ๋๋ค.
- ๋์๋ฌธ์๋ ๊ตฌ๋ณํ์ง ์์ต๋๋ค.
โ๐ป ๋ด ํ์ด
function isIsogram(str) {
// ๋์๋ฌธ์ ๊ตฌ๋ถ์ ์์ ๊ธฐ ์ํด ๋ฌธ์๋ฅผ ์๋ฌธ์๋ก ๋ฐ๊ฟ์ฃผ๋ ์๋ก์ด ๋ฌธ์๋ฅผ ํ ๋นํ๋ ๋ณ์
let newStr = str.toLowerCase();
// true์ false๋ฅผ ๋ํ๋ผ์ ์๋ result๋ณ์๋ฅผ ์ ์ธ
let result = true;
// str์ ๊ธธ์ด๊ฐ 0์ด๋ฉด
if(str.length === 0){
// result = true๋ฅผ ๋ฐํ
return result;
}
for(let i = 0; i<newStr.length; i++){
// ๋ ๋ฒ์ ๋ฐ๋ณต๋ฌธ์ ๋๋ฆฌ๋ค (j๋ i์ ๊ฒน์น์ง ์๊ฒ +1)
for (let j = i+1; j < newStr.length; j++){
// i์ j๊ฐ ๊ฐ๋ค๋ฉด ๊ฐ์ ๋ฌธ์๊ฐ ์๋ ๊ฒ์ด๋ฏ๋ก
if (newStr[i] === newStr[j]){
// false๋ฅผ ๋ฆฌํด
result = false;
}
}
}
return result;
};
โ๐ป ๋ ๋ค๋ฅธ ํ์ด
function isIsogram(str) {
// ๋น ๋ฌธ์์ด์ ์
๋ ฅ๋ฐ์ ๊ฒฝ์ฐ
if (str.length === 0) {
// true๋ฅผ ๋ฆฌํด
return true;
}
// ์์ด์๊ทธ๋จ์ธ์ง ์ฌ๋ถ ํ๋จ์ ์ํด ๋น ๊ฐ์ฒด ์ ์ธ
let newStr = {};
// ๋์๋ฌธ์ ๊ตฌ๋ถ์ ์์ ๊ธฐ ์ํด ๋ชจ๋ ์๋ฌธ์๋ก ๋ฐ๊ฟ์ฃผ๋ ๋ณ์ ํ ๋น
let strLowered = str.toLowerCase();
// ๋ฐ๋ณต๋ฌธ ๋๋ฆฌ๋ฉด์ ๊ฐ์ฒด์ ๋ฃ์
for (let i = 0; i < strLowered.length; i++) {
// ์ด๋ฏธ ๊ฐ์ฒด์ ํด๋น ์ํ๋ฒณ์ด ์๋ค๋ฉด
if (newStr[strLowered[i]]) {
// false๋ฅผ early return
return false;
}
// ๊ฐ์ฒด์ ํด๋น ์ํ๋ฒณ์ด ์๋ค๋ฉด ์ต์ด๋ก ์
๋ ฅ๋ฐ์ ๊ฐ์ ๋ฃ๊ณ , ๊ฐ์ value์ธ true๋ฅผ ๋ฆฌํด
newStr[strLowered[i]] = true;
}
// true๋ฅผ ๋ฆฌํด
return true;
}
๐ฉ๐ป๐ป ๋ฐฐ์ด ์
์ด ๋ฌธ์ ์์๋ true/false ์ฌ๋ถ๋ฅผ ํ๋จํด ๋ฆฌํดํ๋ ๊ฒ์ด๋ฏ๋ก, ๋ฐ๋ณต๋ฌธ ๋ด์์ ์กฐ๊ฑด์ ํด๋นํ๋ค๋ฉด early return์ ํ ํ, ์ดํ boolean ๊ฐ์ ์ต์ข ์ ์ผ๋ก ๋ฆฌํดํ๋ค.
๋๊ธ