Dev-dotoli TIL

algo 2



Sparta coding



Innovation Camp



  • 9 핸드폰 번호 가리기
//Code Refactoring : 변수 star '*'로 대체, arrow함수, for문 쓰면서 return빼기 가능?

const solution = (phone_number) => {
  let ans = "";
  for (let i = 0; i < phone_number.length - 3; i++) {
    ans = "*".repeat(i) + phone_number.slice(-4);
  }
  return ans;
};

function solution(phone_number) {
  let ans = "";
  let star = "*";
  for (let i = 0; i < phone_number.length - 3; i++) {
    ans = star.repeat(i) + phone_number.slice(-4, phone_number.length);
  }
}

// 이해
// 주어진 문자열은 4-20의 랜덤자리수를 가진다
// 뒷자리를 기준으로잡고 4개의 문자를 그대로 표시
// 나머지 문자열이 존재할 경우 '*'로 가린다

// 풀이
// .length 길이 / .slice() 제거 / .charAt? index위치의값 / .repeat() 반복입력

// 1. length로 phone_number 길이 확인
// 2. for문으로 i를 받아 length-4까지 '*'로 .repeat(i)만큼 채워넣기
//  - length-3 이어야 index가 맞게 들어가는지? (index는 0부터 시작)
// 3. phone_number를 .slice로 뒤에서부터 4자리를 자른채로 넣기
//  - parameter 값 이해못해서 여러번 실행해봄


  • 10 행렬의 덧셈 3시간이상 걸림..
    수민님의 강의로 3시간만에 겨우 개념 이해
    문제는 일요일에 혼자서 풀어본 결과 성공적
function solution(arr1, arr2) {
  var ans = [];
  for (i = 0; i < arr1.length; i++) {
    let sum = [];
    for (j = 0; j < arr1[i].length; j++) {
      // arr1.length  > arr1[].length = 행 > 열 (수민님 개념강의)
      sum.push(arr1[i][j] + arr2[i][j]); // Array[][] 2차원배열 form
    }
    ans.push(sum);
  }
  return ans;
}

// 이해
// 배열 두개가 주어지고 arr1 행 , arr2 열
// 각배열의 같은 index끼리 더해라?
// 문제의 개념이 온전히 이해되지 않음 모지?
// 일단 index를 뽑아서 더해보기나 하자
// - 값이 행,열 로 두개가 들어가있다. 이때 index는 어떻게구성?
// - 배열[][] ?
// 행,열의 2차원적 이해가 필요 지금은 한 듯

// 풀이
// .push():배열추가 pop끝삭제shift앞삭제?
// .find():element return

// arr1[i] + arr2[i] ?
// arr1[i][j]+arr2[i][j] ?

//for in문 사용 실패
function solution(arr1, arr2) {
  let answer = [];
  for (i in arr1) {
    let sum = [];
    for (j in arr2) {
      answer.push(arr1[i] + arr2[i], arr1[j] + arr2[j]);
      console.log(answer);
    }
  }
  return answer;
}


  • 11 x만큼 간격이 있는 n개의 숫자 4번에서 우연히 고안했던
    등차수열식을 그대로 적용할 수 있었음
function solution(x, n) {
  var ans = [];
  for (i = 0; i < n; i++) {
    ans.push(x + x * i);
  }
  return ans;
}

// 이해
// x시작, 공차x를 가지고 n개를 지닌 등차수열 생성

// 풀이
// 배열생성,추가 .push()
// x + x*i
// i <= n ? / no / i < n

// Code refactoring 실패
const solution = (x, n) => {
  var ans = [];
  for (i = 0; i < n; i++) {
    ans.push(x + x * i);
  }
  return ans;
};


  • 12 부족한 금액 계산하기 배상훈님 greedy algorithm추천 / 공부해볼 것
function solution(price, money, count) {
  // var ans = -1;
  let ans = 0; // -1; 도 같은결과 이유?
  let sum = 0;
  for (i = 0; i <= count; i++) {
    sum += price * i;
    ans = sum - money;
  }
  if (ans > 0) {
    return ans;
  } else {
    return 0;
  }
}

// 이해
// money-(price*count) / no
//  > 식은 틀렸지만 개념은 맞다 뺄값을 잘설계해봐
//  ? += (price* count[i])
//  i <= count ; i++

// 풀이
// cnt += (price* count[i]); > 변수에
// ans = money-(cnt)?
// 변수 += (price* count[i]) >  count가 i만큼 증가할 때마다 변수에 더해줌
// i는 count만큼증가

// 더하기할당 사용문제?

// console.log(cnt) /NaN cnt가 설계가 잘못됨
// console.log(money)
// console.log(ans) / 0

// let ans = 0; / let cnt = 0; > datatype error가 나는데 이유는? / cnt설계오류 고침

// 딱하나 테스트 실패 ? > 부족하지 않을 때 0 return 실패하는 듯
// for문 종료 시점에 if문을 넣어서 수정 성공


  • 13 2016년
function solution(a, b) {
  let ans = "";
  w = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"];
  const d = new Date(2016, a - 1, b);
  const day = d.getDay();
  ans = w[day];
  return ans;
}

//이해
//정해진 날짜시트에서 무작위 날짜의 요일 추출

//풀이
//년단위시트? 날짜와 관련된 method가 있을까?
// Date(특정날짜) > 비어있으면 현재? // year, month, day, hours, minutes
// .getDay() > 요일값 int로 return 0~6

//다행히 주어진 날짜정보가 실제 달력과 일치 그대로 스면될 듯

//윤년을 고려안함 / 윤년=2월29일있음 / 아니었음 date가 다 고려해서 계산함
//요일처럼 월도 0부터 시작하는것을 놓침