Dev-dotoli TIL

algo 1



Sparta coding



Innovation Camp



  • 1 직사각형 별찍기
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
    const n = data.split(" "); // 5,3 을 쪼개서 53이 아니라 각각의 수 a,b로 쏴줌
    const a = Number(n[0]), b = Number(n[1]);

    const row = "*".repeat(a)+'\n'
    const col = row.repeat(b)
    console.log(col)
});

// 풀이
// 1. n개수만큼 '*'반복 (row)
// 2. 1을 m만큼 반복하기(column) 줄바꿈issue

//feedback
    const row = "*".repeat(a),'\n' //줄바꿈을 ,로 추가해서 띄어씌기
    const col = row.repeat(b)
    console.log(row,col) //col에 row가 담겨잇는데 다시 호출함

// 수민님 풀이
for(let i = 0; i<b; i++){
    let ans = ""
    for (let j = 0; j<a; j++){
        ans = ans + "*"
    }
    console.log(ans)
}

// 팀원님들이 순서를 바꿔도 상관없는지? 변수이름은상관없움
//     for(let j = 0; j < b; j++) {
    let ans = ""
    for (let i = 0; i < a; i++) {
        ans = ans + "*"
    }
    console.log(ans)


  • 2 짝수와 홀수
const solution = (num) => {
  return num % 2 === 0 ? "Even" : "Odd";
};

// 문제이해
// let 'a'에 답을 담고
// 주어지는 값 'num'을 2로 나누고
// 남는 나머지(%)가 0이면 짝수(Even)
// 이외의 값이면 홀수(Odd)로 판단하는 알고리즘
// 마지막으로 a값을 리턴해서 판별

function solution(num) {
  if (num % 2 == 0) {
    return "Even";
  } else {
    return "Odd";
  }
}

function solution(num) {
  return num % 2 == 0 ? "Even" : "Odd";
}

// issue#1 0은 짝수가 아님? / 짝수로 정해줌
// ternary operator(조건부 삼항 연산자)
// if문의 true / false 의 코드양을 줄일 수 있음
// https://developer.mozilla.org/ko/docs/Web/JavaScript/Re


  • 3 가운데 글자 가져오기
function solution(s) {
  return s.substr(Math.floor(s.length / 2) - 1, s.length % 2 == 0 ? 2 : 1);
}

// 이해
// var S 는 1~100의 length를 random하게 가져오는 string
// even일 땐 두 글자를 return

// 풀이
// s.substr([a],[b]) 문자열의 a번째부터 b개수만큼 return
// s.substr( s.length/2 , s.length%2 == 0 ? 짝수일 때 2개 : 홀수일 때 1개 )


  • 4 두 정수 사이의 합 계산을 하다보니 ‘등차수열의 합’공식과 거의 같음
//arrow 함수 써보고 싶어서 (if문 축약?)
const solution = (a, b) =>
  //

  function solution(a, b) {
    let n = 0;
    if (a == b) {
      n = a;
    } else {
      n = (a + b) * ((Math.abs(a - b) + 1) / 2);
    }
    return n;
  };

// 이해
// 1. a,b 사이의 정수값을 모두 더해서 출력

// 풀이
//  - 등차수열? 공통차이값을 가진 수의 나열 / 등차수열의 합?

//    (a+b)*{(a~b사이의 정수개수/2)반올림} = 등차수열의 합 / x
//    (a+b)*{(a~b사이의 정수개수/2)버림}+(a+b)/2 = 등차수열의 합? / x
//    (a+b)*Math.ceil(a~b사이의 정수개수/2)
//    (a+b)*Math.ceil((Math.abs(a-b)+1)/2)

// 2. 값이 같으면 그대로 출력 o

function solution(a, b) {
  let n = 0;
  if (a == b) {
    n = a;
  } else {
    n = (a + b) * Math.floor((Math.abs(a - b) + 1) / 2) + (a + b) / 2;
  }
  return n;
}


  • 5 문자열을 정수로 바꾸기
const solution = (s) => {
  return Number(s);
};

// 이해
// s 는 1~5길이의 ramdom string
// 앞에 부호 +,- 가 올 수 있고 0으로 시작x

// 풀이
// Number() : string > int type으로 바꾸 /  편리한 함수가 있었음

// function solution(s) {
//     var answer = 0;
//     answer = Number(s)
//     return answer;
// }


  • 6 없는 숫자 더하기
function solution(numbers) {
  var answer = -1;
  return answer;
}

// 이해
// 1. 배열 numbers에 0-9사이의 ramdom 정수(중복x)
// 2. 이때 배열에 속하지 않은 수들의 합

// 풀이
// for 문으로 i값을 1씩 증가시키고 i가 배열에 들어있는지 확인?
// if문 이 때 false인 값들을 더해라

// 참고
// indexOf 찾는값의 인덱스 return
// includes 찾는값 boolean return

function solution(numbers) {
  var answer = -1;
  for (let i = 0; i < 10; i++) answer += numbers.includes(i) === false;
  return answer;
}
//실패


  • 7 음양 더하기
function solution(absolutes, signs) {
  var answer = 123456789;
  return answer;
}

// 1. 정수(절대값)가 담긴 배열 absolutes
// 2. 부호가 담긴 signs
// 3. signs와 absolutes는 같은 길이를 가짐
// 4. 이 떄 정수들의 합

// 살려주세요


  • 8 평균 구하기
let solution = (arr) => {                    // => 함수로 이식해봄
    let answer = 0;
    let s = 0;
    for (let i = 0; i < arr.length; i++) {
        s += arr[i];
    }
    return answer = s / arr.length;
}

function solution(arr) {
    let answer = 0;                         // 0, '' / int, str차이?
    let s = 0;
    for (let i = 0; i < arr.length; i++) {   // for문 돌린 i를 arr의 인덱스로 받음
        s += arr[i];                         // s에 arr 요소의 합을 담음
    }
    return answer = s / arr.length;          // 요소의합s 를 배열의 길이로 나눔
}

// 이해
// 1. 1~100 이하 random크기의 배열(array)
// 2. 배열안의 원소(element)는 -10,000 ~ 10,000 안의 random정수
// 평균값을 구하는 함수

//풀이
// 요소를 전부 더해서 배열의 길이로 나누자

const solution(arr) => {
    arr.reduce(cur);
}

function solution(arr) {
   arr.reduce(accumulator[currentValue]);
}

// array.reduce() / .reduce method 사용실패 parameter가 이해 안됨