function solution(new_id) {
let id = new_id.toLowerCase()
id = id.replace(/[^a-z0-9_.-]/g, '').split('')
let i=0
for (let j=i+1; j<id.length; j++) {
if (id[i] === '.' && id[i] === id[j]) {
id.splice(i,1)
j--
continue
} i++
}
if (id[0] === '.') {
id.splice(0,1)
}
if (id.length === 0) {
id[0] = 'a'
}
if (id.length > 15) {
id.length = 15
}
if (id[id.length-1] === '.') {
id.length = id.length-1
}
if (id.length < 3) {
for (let j=id.length-1; j<3; j++) {
id[j] = id[id.length-1]
}
}
return id.join('')
}
모범 답안
: 와,, replace를 연달아서 쓸 생각을 못했네 쩐다!!
function solution(new_id) {
const answer = new_id
.toLowerCase() // 1
.replace(/[^\w-_.]/g, '') // 2
.replace(/\.+/g, '.') // 3
.replace(/^\.|\.$/g, '') // 4
.replace(/^$/, 'a') // 5
.slice(0, 15).replace(/\.$/, ''); // 6
const len = answer.length;
return len > 2 ? answer : answer + answer.charAt(len - 1).repeat(3 - len);
}
function solution(left, right) {
let answer = 0
for (let i=left; i<=right; i++) {
if (Number.isInteger(Math.sqrt(i)) === true) {
answer -= i
} else {
answer += i
}
}
return answer
}
function solution(n) {
let divisors = []
for (let i=1; i<=n; i++) {
if (n%i === 0) {
divisors.push(i)
}
}
let answer = 0
for (const value of divisors) {
answer += value
}
return answer
}
: 아 굳이 배열 안만들고 바로 answer에 더해주면 되겠구낭,,,
function solution(d, budget) {
d.sort((a, b) => a - b)
if (d.length === 1) {
if (d[0] > budget) {
return 0
} else {
return 1
}
}
if (d.reduce((a,b) => a+b,0) < budget) {
return d.length
}
let max = 0
let i
for (i = 0; i < d.length; i++) {
max += d[i]
if (max >= budget) {
break
}
}
if (max == budget) {
return i+1
} else {
return i
}
}