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부터 시작하는것을 놓침