๊ธฐ๋ฅ์๊ตฌ์ฌํญ
๊ธฐ์กด ์ฝ๋ ๋ถ์(์ฃผ์ ์ถ๊ฐ)
function solution(telno) {
// ์ ํ๋ฒํธ ๋ณ์์ ํ ๋น
const tel = telno;
// ์คํจํ์ ๊ฒฝ์ฐ
const failure = ["์ ๊ตญ", "X"];
// ์ ํ๋ฒํธ ์์๋ฆฌ
const map = {
"010": "ํด๋ํฐ",
"011": "ํด๋ํฐ",
"016": "ํด๋ํฐ",
"017": "ํด๋ํฐ",
"018": "ํด๋ํฐ",
"019": "ํด๋ํฐ",
"031": "๊ฒฝ๊ธฐ",
"032": "์ธ์ฒ",
"033": "๊ฐ์",
"041": "์ถฉ์ฒญ",
"042": "๋์ ",
"044": "์ธ์ข
",
"051": "๋ถ์ฐ",
"052": "์ธ์ฐ",
"053": "๋๊ตฌ",
"054": "๊ฒฝ๋ถ",
"055": "๊ฒฝ๋จ",
"061": "์ ๋จ",
"062": "๊ด์ฃผ",
"063": "์ ๋ถ",
"064": "์ ์ฃผ",
};
// ์ ํ๋ฒํธ ์ค๋ฅ 1.์ ํ๋ฒํธ์ ๊ธธ์ด๊ฐ ๋ง์ง ์๋ ๊ฒฝ์ฐ
if (tel.length > 11 || tel.length < 9) return failure;
// ์ ํ๋ฒํธ ์ค๋ฅ 2.์ ํ๋ฒํธ์ ์ฒซ ์๋ฆฌ๊ฐ 0์ผ๋ก ์์ํ์ง ์์ ๊ฒฝ์ฐ
else if (tel[0] !== "0") return failure;
// top => ์ ํ๋ฒํธ ๊ฐ์ฅ ์ 3์๋ฆฌ
const top = tel.substring(0, 3);
// ext => ์ ํ๋ฒํธ ์ 3์๋ฆฌ๋ฅผ ์ ์ธํ ๋๋จธ์ง ๋ฒํธ
const ext = tel.substring(tel.length - 4);
// ์ ํ๋ฒํธ ์์์ ๋ ๋ฒ์งธ ์๋ฆฌ๊ฐ 2์ผ ๋ => 02๊ฐ ์์ธ์ด๋ฏ๋ก ์์ธ์ ๋ํ ์์ธ์ฒ๋ฆฌ
if (tel[1] === "2") {
// ์์ธ ์ ํ๋ฒํธ์ ๊ฒฝ์ฐ 02-xxxx-xxxx์ ์ ํ๋ฒํธ์ด๋ฏ๋ก ์ด ๊ธ์์๊ฐ 10๊ฐ ์ด์์ด๋ฉด ์ค๋ฅ
if (tel.length !== 10) return ["์์ธ", "X"];
// ์์ธ ์ ํ๋ฒํธ์ง๋ง ๊ฐ์ด๋ฐ 4์๋ฆฌ ์ซ์๊ฐ ๋ชจ๋ ๊ฐ์ ๋๋ ๋น์ ์์ ์ธ ์ ํ๋ฒํธ๋ก ์ฒ๋ฆฌ
if (ext[0] === ext[1] && ext[1] === ext[2] && ext[2] === ext[3])
return ["์์ธ", "X"];
// ์ด ์ธ์๋ ์์ธ ์ ํ๋ฒํธ๊ฐ ๋ง์ผ๋ฏ๋ก O
return ["์์ธ", "O"];
} else if (tel[1] === "1") {
// ์ ํ๋ฒํธ ์์์ ๋ ๋ฒ์งธ ์๋ฆฌ๊ฐ 1์ผ ๋ => ํด๋ํฐ์ผ ๊ฒฝ์ฐ๋ฐ์ ์์
// ํด๋นํ๋ ์ธ์๋ฆฌ ์๊ฐ map์์ ์์ ๋๋ ์ค๋ฅ ๋ฐ์
if (!map[top]) return failure;
// ํด๋นํ๋ ์ธ์๋ฆฌ ์๊ฐ map์๋ ์์ง๋ง 010์ ์๋ ๋ => ํด๋ํฐ์ด์ง๋ง X
if (tel[2] !== "0") return ["ํด๋ํฐ", "X"];
// 010-XXXX-XXXX์ ์ ํ๋ฒํธ(11์๋ฆฌ)์ด๊ณ , ์ ํ๋ฒํธ ๋ท๋ถ๋ถ(8์๋ฆฌ)์ ๊ฐ์ฅ ์ฒซ ๋ฒ์งธ ์๊ฐ ์ง์์ผ ๋ => ํด๋ํฐ์ด๋ฉด์ O
if (tel.length === 11 && parseInt(tel[3]) % 2 === 0) return ["ํด๋ํฐ", "O"];
//์ด์ธ์ ๊ฒฝ์ฐ ํด๋ํฐ์ด์ง๋ง X
return ["ํด๋ํฐ", "X"];
} else if (map[top]) {
// 02, 01X ์ด์ธ์ ๊ฒฝ์ฐ์ ์ ์ธ์๋ฆฌ๊ฐ ์ ํ๋ฒํธ์ ์์ ๊ฒฝ์ฐ
// 0XX-0XX-XXXX์ ๊ฒฝ์ฐ ๋ง๋ ์ง์ญ์ ์ฐพ๊ณ X์ ํจ๊ป ๋ฆฌํด
if (tel.length === 10 && tel[3] === "0") return [map[top], "X"];
// 0XX-0XXX-XXXX(์ ๋๋ฒ์งธ ์๋ฆฌ๊ฐ 3 ์ด์, 4๋ฒ์งธ ์๋ฆฌ๊ฐ 1 ์ด์)์ ๊ฒฝ์ฐ -> ์ง์ญ๋ช
๊ณผ ํจ๊ป O ๋ฆฌํด
return [map[top], "O"];
}
// ๋๋จธ์ง์ ์์ธ ์ผ์ด์ค๋ ๋ชจ๋ ์คํจ์ฒ๋ฆฌ
return failure;
}
console.log(solution("010-123-1234"));
console.log(solution("010-2234-1234"));
console.log(solution("02-1234-1234"));
console.log(solution("0212341111"));
console.log(solution("0311237890"));
console.log(solution("061-012-7890"));
console.log(solution("015-0157899"));
console.log(solution("042-2123-7890"));
์๊ตฌ์ฌํญ ์ญ๋ถ์ํ๊ธฐ
๊ธฐ๋ณธ์ ์ธ ์ ํ๋ฒํธ ์กฐ๊ฑด
- ์ ํ๋ฒํธ์ ๊ธธ์ด๋ 9~11์
- ์ ํ๋ฒํธ์ ์ฒซ ์๋ฆฌ๊ฐ 0์ด์ด์ผ ํจ
์์ธ ์ง์ญ ์กฐ๊ฑด ํ๋จ
- ์ ํ๋ฒํธ ์์์ ๋ ๋ฒ์งธ ์๋ฆฌ๊ฐ 2(02)
- 10์๋ฆฌ(02-XXXX-XXXX)
- ์์ธ ์ ํ๋ฒํธ์ง๋ง ๊ฐ์ด๋ฐ 4์๋ฆฌ ์ซ์๊ฐ ๋ชจ๋ ๊ฐ์ง ์์์ผ ํจ
ํด๋ํฐ ๋ฒํธ ํ๋จ ์กฐ๊ฑด
- ์ ํ๋ฒํธ ์์์ ๋ ๋ฒ์งธ ์๋ฆฌ๊ฐ 1
- ์ธ๋ฒ์งธ ์๋ฆฌ๊ฐ 0์ด ์๋ ๊ฒฝ์ฐ์๋ ํด๋ํฐ์ด์ง๋ง ์กฐ๊ฑด์ ๋ง์ง ์์
- 010-XXXX-XXXX์ ์ ํ๋ฒํธ(11์๋ฆฌ)์ด๊ณ , ์ ํ๋ฒํธ ๋ท๋ถ๋ถ(8์๋ฆฌ)์ ๊ฐ์ฅ ์ฒซ ๋ฒ์งธ ์๊ฐ ์ง์์ผ ๋ ์กฐ๊ฑด์ ๋ง์
- ๊ทธ ์ธ์ ๊ฒฝ์ฐ์๋ ํด๋ํฐ์ด์ง๋ง ๋ชจ๋ ์กฐ๊ฑด์ด ๋ง์ง ์์ ๊ฒ์ผ๋ก
๐จ ์ ์กฐ๊ฑด์ ๋ง์ง ์์ ๊ฒฝ์ฐ๋ ๋ชจ๋ ์คํจ์ฒ๋ฆฌ ๐จ
๋๋ฒ๊น ํด์ ๊ฐ์ ํ๊ธฐ
- ๋ฌธ์๊ฐ ํฌํจ๋์ด ์์ด๋ ๋์ํ๋๋ก ๋ง๋ค๊ธฐ
const tel = telno.replaceAll("-", "");๋งจ ์ฒ์์ ๋ฒํธ๋ฅผ parameter๋ก ๋ฐ์ ๋ค์์ replaceAll ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ -๋ฅผ ๋ชจ๋ ์ ๊ฑฐ
๊ฐ์ ํ ์ดํ ๋์์ ํ์ธํ๊ธฐ ์ํ ์ ์ถ๋ ฅ ์กฐ๊ฑด ์ถ๊ฐ
// output : [ 'ํด๋ํฐ', O ]
console.log(solution("010-------2234----1234"));
// output : [ '์์ธ', O ]
console.log(solution("0-2-1-2-3--41-1-1-2"));์๋ก์ด ์๊ตฌ์ฌํญ ์ถ๊ฐํ๊ธฐ
001๊ณผ 002๋ก ์์ํ๋ ๋ฒํธ๋ ๊ตญ์ ์ ํ๋ก ํ๋จํด์ ์3์๋ฆฌ๋ฅผ ์ ์ธํ๊ณ 8์๋ฆฌ~12์๋ฆฌ๊น์ง๋ง ํ์ฉํ๋ ๋ก์ง ์ถ๊ฐ
// top๊ณผ ext ํ ๋น์ ์๋ก ๋์ด์ฌ๋ ค ๊ตญ์ ๋ฒํธ ํ๋จํ๋๋ฐ ํ์ฉ
// top => ์ ํ๋ฒํธ ๊ฐ์ฅ ์ 3์๋ฆฌ
const top = tel.substring(0, 3);
// ext => ์ ํ๋ฒํธ ๋ค 4์๋ฆฌ
const ext = tel.substring(tel.length - 4);
// rest => ์ง์ญ๋ฒํธ๋ฅผ ๋บ ๋๋จธ์ง ๋ท๋ฒํธ
const rest = tel.substring(3);
if (top === "001" || top === "002") {
if (rest.length > 12 || rest.length < 8) return failure.global;
return ["๊ตญ์ ์ ํ", "O"];
}001๊ณผ 002๋ก ์์ํ๋ ๋ฒํธ์ ๊ฒฝ์ฐ์๋ ์ ์ฝ๋์์ top ๋ณ์๊ฐ ์์ ์ง์ญ๋ฒํธ๋ฅผ ํ๋ณํ๋ ์ฉ๋๋ก ์ฌ์ฉํ ๊ฒ์ ํ์ฉํ์ฌ top์ด ์ฌํ ๋น๋๋ ์์น๋ฅผ ์๋ก ๋์ด์ฌ๋ฆฐ ๋ค์ top ๋ณ์์ ์กฐ๊ฑด๋ฌธ์ ๊ฑธ์ด ํต์ฑ๋ก 001๊ณผ 002๋ฅผ ๊ฒ์ฌํ์๋ค.
๊ฒ์ฌ์ ํต๊ณผํ์์ ๊ฒฝ์ฐ ๋ ๊ฒ์ฌํด์ผ ํ ์กฐ๊ฑด์ ์3์๋ฆฌ๋ฅผ ์ ์ธํ ๋ท์๋ฆฌ์ ๊ธ์์๋ฐ์ ์๊ธฐ ๋๋ฌธ์ length ์กฐ๊ฑด๋ง ์ถ๊ฐํด์ฃผ์ด ํด๋น ์กฐ๊ฑด์ ํต๊ณผํ์ง ๋ชปํ์ ๋, failure.global ์ ๋ฆฌํดํ๋๋ก ํ์๋ค.
์ฌ๊ธฐ์ global์ ๊ธฐ์กด failure์ ๊ฐ์ฒด๋ก ๋ง๋ค์ด ์ง์ญ๋ฒํธ/๊ตญ์ ์ ํ/ํด๋ํฐ ๋ฒํธ ๊ฒ์ฌ ์คํจ๋ฅผ ์ธ๋ถํํ์ฌ ๋ง๋ฆ์ผ๋ก์จ ๋ณ์๋ฅผ ํตํด ์ ๊ทผํ์ฌ ๋ฆฌํดํ๋๋ก ๋ง๋ค์๋ค.
๊ตฌํํ ์ดํ ๋์์ ํ์ธํ๊ธฐ ์ํ ์ ์ถ๋ ฅ ์กฐ๊ฑด ์ถ๊ฐ
console.log("๊ตญ์ ์ ํ ํ
์คํธ์ผ์ด์ค");
// output: [ '๊ตญ์ ์ ํ', 'O' ]
console.log(solution("002-2234-1234"));
// output: [ '๊ตญ์ ์ ํ', 'X' ]
console.log(solution("002-22344-12344121123"));
// output: [ '๊ตญ์ ์ ํ', 'O' ]
console.log(solution("001-2234----12342"));
// output: [ '๊ตญ์ ์ ํ', 'X' ]
console.log(solution("001-2234-122"));์ ์ฒด ๋ฆฌํฉํ ๋งํ ํ ์ฝ๋
function solution(telno) {
// ์ ํ๋ฒํธ ๋ณ์์ ํ ๋น
const tel = telno.replaceAll("-", "");
//์ฑ๊ณตํ์ ๊ฒฝ์ฐ
const success = {
seoul: ["์์ธ", "O"],
global: ["๊ตญ์ ์ ํ", "O"],
phone: ["ํด๋ํฐ", "O"],
};
// ์คํจํ์ ๊ฒฝ์ฐ
const failure = {
domestic: ["์ ๊ตญ", "X"],
seoul: ["์์ธ", "X"],
global: ["๊ตญ์ ์ ํ", "X"],
phone: ["ํด๋ํฐ", "X"],
};
// ์ ํ๋ฒํธ ์์๋ฆฌ
const map = {
"010": "ํด๋ํฐ",
"011": "ํด๋ํฐ",
"016": "ํด๋ํฐ",
"017": "ํด๋ํฐ",
"018": "ํด๋ํฐ",
"019": "ํด๋ํฐ",
"031": "๊ฒฝ๊ธฐ",
"032": "์ธ์ฒ",
"033": "๊ฐ์",
"041": "์ถฉ์ฒญ",
"042": "๋์ ",
"044": "์ธ์ข
",
"051": "๋ถ์ฐ",
"052": "์ธ์ฐ",
"053": "๋๊ตฌ",
"054": "๊ฒฝ๋ถ",
"055": "๊ฒฝ๋จ",
"061": "์ ๋จ",
"062": "๊ด์ฃผ",
"063": "์ ๋ถ",
"064": "์ ์ฃผ",
};
// top๊ณผ ext ํ ๋น์ ์๋ก ๋์ด์ฌ๋ ค ๊ตญ์ ๋ฒํธ ํ๋จํ๋๋ฐ ํ์ฉ
// top => ์ ํ๋ฒํธ ๊ฐ์ฅ ์ 3์๋ฆฌ
const top = tel.substring(0, 3);
// ext => ์ ํ๋ฒํธ ๋ค 4์๋ฆฌ
const ext = tel.substring(tel.length - 4);
// rest => ์ง์ญ๋ฒํธ๋ฅผ ๋บ ๋๋จธ์ง ๋ท๋ฒํธ
const rest = tel.substring(3);
if (top === "001" || top === "002") {
if (rest.length > 12 || rest.length < 8) return failure.global;
return success.global;
}
// ์ ํ๋ฒํธ ์ค๋ฅ 1.์ ํ๋ฒํธ์ ๊ธธ์ด๊ฐ ๋ง์ง ์๋ ๊ฒฝ์ฐ
if (tel.length > 11 || tel.length < 9) return failure.domestic;
// ์ ํ๋ฒํธ ์ค๋ฅ 2.์ ํ๋ฒํธ์ ์ฒซ ์๋ฆฌ๊ฐ 0์ผ๋ก ์์ํ์ง ์์ ๊ฒฝ์ฐ
else if (tel[0] !== "0") return failure.domestic;
// ์ ํ๋ฒํธ ์์์ ๋ ๋ฒ์งธ ์๋ฆฌ๊ฐ 2์ผ ๋ => 02๊ฐ ์์ธ์ด๋ฏ๋ก ์์ธ์ ๋ํ ์์ธ์ฒ๋ฆฌ
if (tel[1] === "2") {
// ์์ธ ์ ํ๋ฒํธ์ ๊ฒฝ์ฐ 02-xxxx-xxxx์ ์ ํ๋ฒํธ์ด๋ฏ๋ก ์ด ๊ธ์์๊ฐ 10๊ฐ ์ด์์ด๋ฉด ์ค๋ฅ
if (tel.length !== 10) return failure.seoul;
// ์์ธ ์ ํ๋ฒํธ์ง๋ง ๊ฐ์ด๋ฐ 4์๋ฆฌ ์ซ์๊ฐ ๋ชจ๋ ๊ฐ์ ๋๋ ๋น์ ์์ ์ธ ์ ํ๋ฒํธ๋ก ์ฒ๋ฆฌ
if (ext[0] === ext[1] && ext[1] === ext[2] && ext[2] === ext[3])
return failure.seoul;
return success.seoul;
} else if (tel[1] === "1") {
// ์ ํ๋ฒํธ ์์์ ๋ ๋ฒ์งธ ์๋ฆฌ๊ฐ 1์ผ ๋ => ํด๋ํฐ์ผ ๊ฒฝ์ฐ๋ฐ์ ์์
// ํด๋นํ๋ ์ธ์๋ฆฌ ์๊ฐ map์์ ์์ ๋๋ ์ค๋ฅ ๋ฐ์
if (!map[top]) return failure.domestic;
// ํด๋นํ๋ ์ธ์๋ฆฌ ์๊ฐ map์๋ ์์ง๋ง 010์ ์๋ ๋ => ํด๋ํฐ์ด์ง๋ง X
if (tel[2] !== "0") return failure.phone;
// 010-XXXX-XXXX์ ์ ํ๋ฒํธ(11์๋ฆฌ)์ด๊ณ , ์ ํ๋ฒํธ ๋ท๋ถ๋ถ(8์๋ฆฌ)์ ๊ฐ์ฅ ์ฒซ ๋ฒ์งธ ์๊ฐ ์ง์์ผ ๋ => ํด๋ํฐ์ด๋ฉด์ O
if (tel.length === 11 && parseInt(tel[3]) % 2 === 0) return success.phone;
//์ด์ธ์ ๊ฒฝ์ฐ ํด๋ํฐ์ด์ง๋ง X
return failure.phone;
} else if (map[top]) {
// 02, 01X ์ด์ธ์ ๊ฒฝ์ฐ์ ์ ์ธ์๋ฆฌ๊ฐ ์ ํ๋ฒํธ์ ์์ ๊ฒฝ์ฐ
// 0XX-0XX-XXXX์ ๊ฒฝ์ฐ ๋ง๋ ์ง์ญ์ ์ฐพ๊ณ X์ ํจ๊ป ๋ฆฌํด
if (tel.length === 10 && tel[3] === "0") return [map[top], "X"];
// 0XX-XXXX-XXXX(์ ๋๋ฒ์งธ ์๋ฆฌ๊ฐ 3 ์ด์)์ ๊ฒฝ์ฐ -> ์ง์ญ๋ช
๊ณผ ํจ๊ป O ๋ฆฌํด
return [map[top], "O"];
}
// ๋๋จธ์ง์ ์์ธ ์ผ์ด์ค๋ ๋ชจ๋ ์คํจ์ฒ๋ฆฌ
return failure.domestic;
}
console.log("๊ตญ์ ์ ํ ํ
์คํธ์ผ์ด์ค");
// output: [ '๊ตญ์ ์ ํ', 'O' ]
console.log(solution("002-2234-1234"));
// output: [ '๊ตญ์ ์ ํ', 'X' ]
console.log(solution("002-22344-12344121123"));
// output: [ '๊ตญ์ ์ ํ', 'O' ]
console.log(solution("001-2234----12342"));
// output: [ '๊ตญ์ ์ ํ', 'X' ]
console.log(solution("001-2234-122"));
console.log("- ํฌํจ ๋์ ํ
์คํธ์ผ์ด์ค");
// output: [ 'ํด๋ํฐ', 'O' ]
console.log(solution("010-------2234----1234"));
// output: [ '์์ธ', 'O' ]
console.log(solution("0-2-1-2-3--41-1-1-2"));
console.log("์ผ๋ฐ ์ผ์ด์ค");
// output: [ 'ํด๋ํฐ', 'X' ]
console.log(solution("010-123-1234"));
// output: [ 'ํด๋ํฐ', 'O' ]
console.log(solution("010-2234-1234"));
// output: [ '์์ธ', 'O' ]
console.log(solution("02-1234-1234"));
// output: [ '์ ๊ตญ', 'X' ]
console.log(solution("12-1234-1234"));
// output: [ '์์ธ', 'X' ]
console.log(solution("0212341111"));
// output: [ '๊ฒฝ๊ธฐ', 'O' ]
console.log(solution("0311237890"));
// output: [ '์ ๋จ', 'X' ]
console.log(solution("061-012-7890"));
// output: [ '์ ๊ตญ', 'X' ]
console.log(solution("015-0157899"));
// output: [ '๋์ ', 'O' ]
console.log(solution("042-2123-7890"));