알고리즘
const fs = require('fs');
// let input = fs.readFileSync('input.txt').toString().trim().split('\n');
let input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const n = Number(input[0]);
const arrayN = input[1].split(' ').map(element => Number(element));
const m = Number(input[2]);
const arrayM = input[3].split(' ').map(element => Number(element));
arrayN.sort((a, b) => a - b);
function binarySearch(arrayN, target) {
let leftIndex = 0;
let rightIndex = arrayN.length - 1;
while (leftIndex <= rightIndex) {
const mid = parseInt((leftIndex + rightIndex) / 2);
if (arrayN[mid] === target) {
return '1';
} else if (arrayN[mid] > target) {
rightIndex = mid - 1;
} else {
leftIndex = mid + 1;
}
}
return '0';
}
function solution(n, arrayN, m, arrayM) {
let result = '';
for (let i = 0; i < m; i++) {
result += binarySearch(arrayN, arrayM[i]) + ' ';
}
console.log(result.trim());
}
solution(n, arrayN, m, arrayM);
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : 'input.txt'
const input = fs.readFileSync(filePath).toString().trim().split('\n');
const inputString = Array.from(input[0]);
const bomb = input[1];
function solution(inputString, bomb) {
const stack = new Array();
const result = new Array();
for (let i of inputString) {
result.push(i);
if (bomb.indexOf(i) !== -1) {
stack.push(i);
} else {
for (let i = 0; i < bomb.length; i++) {
stack.pop();
}
}
if (stack.length >= bomb.length) {
let temp = '';
for (let i = bomb.length - 1; i >= 0; i--) {
temp += stack[stack.length - 1 - i];
}
if (temp === bomb) {
for (let i = 0; i < bomb.length; i++) {
stack.pop();
result.pop();
}
}
}
}
if (result.length === 0) {
console.log('FRULA');
} else {
console.log(result.join('').trim());
}
}
solution(inputString, bomb);
속도가 너무 느리다 왜 느리지? 빠르게 나온 다른 사람들의 답안을 참고해봐야겠다.
나는 1200ms가 나오고, 속도가 빠르게 나온 사람들의 속도는 350ms 근처였다.
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : 'input.txt';
let input = fs.readFileSync(filePath).toString().trim();
input = Number(input);
// let result = Number.MAX_SAFE_INTEGER;
function check(currentNumber, target) {
currentNumber = Array.from(String(currentNumber));
let sum = Number(currentNumber.join(''));
for (let i = 0; i < currentNumber.length; i++) {
sum += Number(currentNumber[i]);
}
if (sum === target) {
return true;
} else {
return false;
}
}
function solution(input) {
let result = 0;
for (let i = 1; i < input; i++) {
if (check(i, input) === true) {
result = i;
break;
}
}
console.log(result);
}
solution(input);
그냥 1부터 for문 돌게 했다... 이렇게 해도 풀릴까? 싶었는데 풀렸다. 1,000,000까지가 범위인 걸 보고 그냥 완전 탐색으로 돌렸는데 이게 맞나 싶다. 똥내나게 푼 것 같은데 이것도 역시 다른 사람 풀이를 참고해봐야겠다.
function solution(s) {
s = s.replace(/zero/gi, '0');
s = s.replace(/one/gi, '1');
s = s.replace(/two/gi, '2');
s = s.replace(/three/gi, '3');
s = s.replace(/four/gi, '4');
s = s.replace(/five/gi, '5');
s = s.replace(/six/gi, '6');
s = s.replace(/seven/gi, '7');
s = s.replace(/eight/gi, '8');
s = s.replace(/nine/gi, '9');
return Number(s);
}
CS
하루를 마치고
정글에서 파이썬으로 알고리즘을 풀었다보니, 요즘 자바스크립트로 풀면서 주저되는 생각이 자주 든다. '이거 파이썬으로 풀면 더 빨리 끝날 것 같은데...', '코테가서 파이썬으로 푸는 게 좋을 것 같은데...'
하지만 현실적으로, 냉정하게 보면 나는 프론트엔드를 하고 싶으니 자바스크립트로 풀어야 한다. 승준아 흔들리지 말자! 자바스크립트도 나름 할만하다! 메소드 여러 개 배우고 나중에 개발할 때에도 얼마나 유용하겠는가! ㅋ
대부분의 사람들이 파이썬이나 C++로 풀다보니 소외감을 느끼는 것도 사실이다. 도저히 안풀려서 정답을 보면 대부분 자바스크립트(Node.js)로 푼 경우는 다른 언어보다 확실히 적다. 후... 그래도 swift 요런 것 보다는 낫겠지!!!