prompt()
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
const n = data.split(" ");
const a = Number(n[0]), b = Number(n[1]);
console.log(a);
console.log(b);
});
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
const n = data.split(" ");
const a = Number(n[0]), b = Number(n[1]);
const star = `${'*'.repeat(a)}\n`;
console.log(star.repeat(b));
});
2번째 방법
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
const n = data.split(" ");
const a = Number(n[0]), b = Number(n[1]);
for(var i=0; i<b; i++){
console.log('*'.repeat(a))
}
});
let b = 1;
const a = 1;
function hi () {
let b = 100;
b++;
console.log(a,b);
}
console.log(a);
console.log(b);
hi();
console.log(b);
처음 a가 안찍힌건 지역변수라서
function solution(x, n) {
var answer = [];
for(let i=0; i<n; i++){
answer[i] = x*(i+1)
}
return answer;
}
function solution(x, n) {
return Array(n).fill(x).map((v, i) => (i + 1) * v)
}
fill() 메서드는 배열의 시작 인덱스부터 끝 인덱스의 이전까지 정적인 값 하나로 채웁니다.arr.fill(value, start, end)
map() 메서드는 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환합니다.
function solution(n) {
return Array(n)
}
console.log(solution(4)) 해보니 array(n)은 n개 갯수의 인덱스르 가지는 리스트를 만들었다
array.map(callbackFunction(currenValue, index, array), thisArg) 인데
map(v,i)인데 그럼 v는 현재값 x 일테고 i는 x의 인덱스 일터 그럼 (i+1)*v는 처음 i는 0이고 x를 곱해주는거니까
각 index의 값의 value에 x를 곱해주는데 fill로 전부 index의 값을 x로 만들었으니 잘 해결이 된다
function solution(s) {
let str = s
let n = str.length;
let answer =''
if (n%2 == 0){
answer = str.substring(n/2-1,n/2+1)
}else{
answer = str.substring(n/2,n/2+1)
}return answer
}
console.log(solution('abcde'))
function solution(s) {
const mid = Math.floor(s.length/2);
return s.length %2 === 1 ? s[mid] : s[mid-1]+s[mid];
}
Math.floor() : 소수점 이하를 버림한다.
Math.ceil() : 소수점 이하를 올림한다.
Math.round() : 소수점 이하를 반올림한다.
function solution(s) {
const mid = parseInt(s.length/2);
return s.length %2 === 1 ? s[mid] : s[mid-1]+s[mid];
}
console.log(solution('abcdefg'))
parseint를 이용한다
function solution(arr) {
let arrsum = 0
for(let i=0; i<arr.length; i++){
arrsum += arr[i]
answer = arrsum/arr.length
}
return answer;
}
const arr = [1, 2, 3, 4, 5];
const result = arr.reduce((acc, cur, idx) => { return acc += cur; }, 0);
console.log(result); // 15
const arr2 = [1, 2, 3, 4, 5];
const result2 = arr2.reduce((acc, cur, idx) => { return acc += cur; }, 10);
console.log(result2); // 25
일때 acc 누산기 즉 값이 저장되는곳이라 생각하고
cur는 현재의 값 인텍스 값마다의 값이다 맨뒤에 0, 10이라고 적힌부부은 intial value 로 처음에 더해진다
이걸 이용하면
function solution(arr) {
let sum = arr.reduce((acc,cur)=>{return acc += cur},0)
return sum/arr.length
}
로 사용할 수 있다.
다른 사람이 쓴거는 요것
function average(array){
return array.reduce((a, b) => a + b) / array.length;
}
요는 a,b 안의 변수 뭐든 상관없이 다 더한다고 생각하면된다.
function solution(a, b) {
let count = 0;
const day = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"];
const month = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
for (let i = 1; i < a; i++) count += month[i];
count += b;
return day[(count + 4) % 7]; // 금요일 부터 1일 이므로
}
function getDayName(a,b){
var date = new Date(2016, (a - 1), b);
return date.toString().slice(0, 3).toUpperCase();
}
https://devjhs.tistory.com/80를 참조하면 된다.
function getDayName(a,b){
var dayList = ['FRI','SAT','SUN','MON','TUE','WED','THU'];
var monthArr = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
var daySum;
if(a < 2) {
daySum = b - 1;
} else {
daySum = monthArr.slice(0, a - 1).reduce((a, b) => a + b) + b - 1;
}
return dayList[daySum % 7];
}
정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.
function solution(num) { return num%2 === 0 ? 'Even':'Odd'}
if문을 쓸까 했지만 삼황연산자가 더짧을꺼같아서 썻다.
function adder(a, b){
var result = (a<b)?a:b;
while(a!=b){
result += (a<b)?++a:++b;
}
return result;
}
function adder(a, b){return (a+b)*(Math.abs(b-a)+1)/2;}
내가 푼 방법
function adder(a, b){
let answer = []
if (a ==b){ answer = a}
else if(a<b){
for(let i =0; i<Math.abs((b-a)+1); i++){
let c = a+i
answer.push(c)
}
}else{
for(let i =0; i<Math.abs((b-a)+1); i++){
let c = b+i
answer.push(c)
}
}
console.log(answer)
return answer.reduce((f,g)=>f+g)
}
function solution(a, b) {
let minnum = Math.min(a,b)
let maxnum = Math.max(a,b)
let s =0
for(let i=minnum; i<=maxnum; i++){
s += i;
}return s
}
또 다른 방법으로 푼것
function solution(s) {return parseInt(s);}
ori = [0,1,2,3,4,5,6,7,8,9]
function solution(Num) {
a = ori.reduce((c,d)=>c+d)
b = Num.reduce((f,g)=>f+g)
return a-b
}
배열에서 배열을 뺄려다 시간을 버렸네
다른식
function solution(numbers) {
let cnt = 0;
for(let i=0; i<10; i++){
if(!(numbers.includes(i))) cnt+= i
}
return cnt
}
function solution(a, b) {
let c = []
for(let i=0; i<b.length; i++){
if( b[i] == true) { c.push(a[i]) }
else if(b[i]== false){c.push(-a[i])
}}
return c.reduce((f,g)=>f+g)}
더좋은거
function solution(a, b) {
return a.reduce((acc,cur, ind) => acc+(cur*(b[ind] ? 1 : -1)),0)
}
reduce 써서 true일때 1곱하고 false일때 -1 곱하기
function solution(phone_number) {
let back = phone_number.slice(-4)
let front = phone_number.slice(0,-4)
return "*".repeat(front.length) + back
}
function hide_numbers(s){
var result = "*".repeat(s.length - 4) + s.slice(-4);
return result;
}
function solution() {
let a = [[1,2],[5,6]]
let b = [[3,4],[7,8]]
return a[0][1] +b[1][1]
}
function solution(a,b) {
const answer = [[]]
for(let i=0; i<arr1.length; i++){
answer[i] = []
for(let j=0; j<arr2.length; j++){
answer[i][j] = a[i][j] + b[i][j]
}
}return answer
}
vscode 에서 잘 되는데 프로그래머스에는 안된다 왤까
function solution(A,B){
return A.map((a,i) => a.map((b, j) => b + B[i][j]));
}
map으로 했을때
첫 A.map은 [], []를 나타내고 a.map은 []안의 숫자를 나타냄
그래서 위의 코드로는 행과 열이 아예 같지 않다면 시행이안된다
let arr1 = [[1,2],[5,4],[2,3]]
let arr2 = [[8,5],[11,6],[6,7]]
function solution(arr1, arr2) {
var answer = [[]];
for (var i=0; i<arr1.length; i++){
answer[i] =[];
for(var j=0; j<arr1[i].length; j++){
answer[i].push(arr1[i][j] + arr2[i][j]);
}
}
return answer;
}
console.log(solution(arr1, arr2))
j의 길이의 문제 였는데 여러번 고치다가 저거인걸알지만 안됬지만 결국 이해했다, j의 길이는 i의 길이여야헀던것
function solution(price, money, count) {
let sum =0
for(let i=1; i<=count; i++){
sum += i*price
}
let answer = money-sum > 0 ? result = 0 : result = Math.abs(money-sum)
return answer;
}
가우스 공식
function solution(price, money, count) {
const tmp = price * count * (count + 1) / 2 - money;
return tmp > 0 ? tmp : 0;
}