이전 소스 코드
function solution(board, moves) {
var answer = 0;
const row = board.length;
const column = board[0].length;
let basket = [];
moves.forEach((move) => {
for (let i = 0; i < row; i++) {
const character = board[i][move - 1];
if (character !== 0) {
basket.push(character);
board[i][move - 1] = 0;
break;
}
}
});
console.log(basket);
for (let i = 0; i < basket.length - 1; i++) {
if (basket[i] === basket[i + 1]) {
answer += 2;
basket.splice(i, 2);
i -= 2;
}
}
return answer;
}
다시 풀이한 소스 코드
function solution(board, moves) {
/*
1. moves[i] - 1을 열로 가진 요소를 탐색한다. (board[j][moves[i] - 1])
2. 0이 아니라면 0으로 바꾼 뒤 바구니에 넣는다.
3. 바구니에 들어있는 맨 뒤 요소가 넣으려는 요소와 같다면
맨 뒤 요소를 꺼내고 카운트를 두 개 증가시킨다.
4. moves 탐색이 끝나면 카운트를 반환한다.
*/
let count = 0;
const basket = [];
for (let i = 0; i < moves.length; i++) {
for (let j = 0; j < board.length; j++) {
const character = board[j][moves[i] - 1];
if (character !== 0) {
board[j][moves[i] - 1] = 0;
if (basket.length !== 0 && basket[basket.length - 1] === character) {
basket.pop();
count += 2;
} else {
basket.push(character);
}
break;
}
}
}
return count;
}
이전 소스 코드
function solution(new_id) {
let answer = "";
answer = new_id
.toLowerCase()
.replace(/[^\w.-]/g, "")
.replace(/\.{2,}/g, ".")
.replace(/^\.|\.$/g, "");
let len = answer.length;
if (len === 0) {
answer = "a";
len = answer.length;
}
if (len > 15) {
answer = answer.slice(0, 15).replace(/\.$/g, "");
}
if (len <= 2) {
answer += answer.charAt(len - 1).repeat(3 - len);
}
return answer;
}
다시 풀이한 소스 코드
function solution(new_id) {
const answer = new_id
.toLowerCase()
.replace(/[^\w-.]/g, '')
.replace(/\.{2,}/g, '.')
.replace(/^\.|\.$/g, '')
.padEnd(1, 'a')
.slice(0, 15)
.replace(/\.$/, '');;
return answer.padEnd(3, answer.slice(-1))
}
이전 소스 코드
function solution(answers) {
var answer = [];
const first = [1, 2, 3, 4, 5];
const second = [2, 1, 2, 3, 2, 4, 2, 5];
const third = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
let count = new Array(3).fill(0);
for (let i = 0; i < answers.length; i++) {
if (answers[i] === first[i % first.length]) {
count[0] += 1;
}
if (answers[i] === second[i % second.length]) {
count[1] += 1;
}
if (answers[i] === third[i % third.length]) {
count[2] += 1;
}
}
let max = count[0];
for (let i = 1; i < count.length; i++) {
if (max < count[i]) {
max = count[i];
}
}
for (let i = 0; i < 3; i++) {
if (max === count[i]) {
answer.push(i + 1);
}
}
return answer;
}
다시 풀이한 소스 코드
function solution(answers) {
const people = [
[1, 2, 3, 4, 5],
[2, 1, 2, 3, 2, 4, 2, 5],
[3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
];
const count = new Array(3).fill(0);
for (let j = 0; j < people.length; j++) {
count[j] = answers.filter((answer, i) => answer === people[j][i % people[j].length]).length;
}
const max = Math.max(...count);
const answer = [];
for (let i = 0; i < count.length; i++) {
if (max === count[i]) {
answer.push(i + 1);
}
}
return answer;
}
이전 소스 코드
function solution(n, lost, reserve) {
let result = new Array(n).fill(1);
for (let i = 0; i < lost.length; i++) {
result[lost[i] - 1] -= 1;
}
for (let i = 0; i < reserve.length; i++) {
result[reserve[i] - 1] += 1;
}
for (let i = 0; i < n - 1; i++) {
if (result[i] === 0 && result[i+1] === 2 || result[i] === 2 && result[i+1] === 0) {
result[i] = 1;
result[i+1] = 1;
}
}
let answer = 0;
for (let i = 0; i < n; i++) {
if (result[i] >= 1) {
answer += 1;
}
}
return answer;
}
다시 풀이한 소스 코드
function solution(n, lost, reserve) {
/*
1. 현재 학생들이 가지고 있는 체육복의 현황을 조사한다.
2. 만약 도난당한 학생과 체육복이 2개인 학생의 인덱스가 붙어있다면
체육복을 빌려준다.
3. 체육복 갯수가 1 또는 2인 학생들의 수를 리턴한다.
*/
// 1
const current = new Array(n).fill(1);
lost.forEach(l => current[l - 1] -= 1);
reserve.forEach(r => current[r - 1] += 1);
// 2
for (let i = 0; i < n - 1; i++) {
if (current[i] === 0 && current[i + 1] === 2 ||
current[i] === 2 && current[i + 1] === 0) {
current[i] = 1;
current[i + 1] = 1;
}
}
// 3
return current.filter(c => c >= 1).length;
}
이전 소스 코드
function solution(nums) {
const sums = [];
for (let i = 0; i < nums.length; i++) {
for (let j = i + 1; j < nums.length; j++) {
for (let k = j + 1; k < nums.length; k++) {
sums.push(nums[i] + nums[j] + nums[k]);
}
}
}
const not = [];
sums.forEach(sum => {
for (let i = 2; i < sum; i++) {
if (sum % i === 0) {
not.push(sum);
break;
}
}
});
return sums.length - not.length;
}
다시 풀이한 소스 코드
function isPrime(num) {
if (num === 2 || num === 3) {
return true;
}
if (num < 2 || num % 2 == 0) {
return false;
}
for (let i = 3; i <= Math.sqrt(num); i += 2) {
if (num % i === 0) {
return false;
}
}
return true;
}
function solution(nums) {
/*
1. 삼중 for문을 통해 겹치지 않게 3개의 숫자를 더한다.
2. 그 숫자가 소수인지 판별한다.
3. 소수라면 count를 증가한다.
4. count를 리턴한다.
*/
let count = 0;
for (let i = 0; i < nums.length - 2; i++) {
for (let j = i + 1; j < nums.length - 1; j++) {
for (let k = j + 1; k < nums.length; k++) {
const sum = nums[i] + nums[j] + nums[k];
if (isPrime(sum)) {
count += 1;
}
}
}
}
return count;
}