[항해99] 3/15 Algorithm TIL

최스탑·2022년 3월 15일
0

[항해99] 2주차

목록 보기
4/6

알고리즘 모의고사가 있었다! 일단 보이는 문제가 길어서 1차 당황했지만,,그래도 나름 빨리 해결하고 제출까지 완료했다. 아니 영상찍는게 더 오래 걸리면 어쩌란말임,,,ㅋㅎ,,,


*JS 기반의 문제 풀이
< TIL >
1. 모의고사 1번 문제 다른 방법 풀이

//1. 삼항연산자
for(let i = 0; i < arr1.length; i++){
	arr2[i] >= 29 ? answer += 21 - arr1[i] : answer += arr2[i] - arr1[i];
}
//2. reduce
function solution(arr1, arr2) {
	let answer = 0;
    answer = arr2.reduce((acc, val, idx) => {
    	val >= 29 ? val = 21 : val
       return acc += val - arr1[idx]}, 0)
}

//
2. 모의고사 2번 문제 풀이
<실패한 코드>

function solution(month, day){
	let result="";
	var date = new Date(2022, month, day);
	date.setDate(date.getDate()+98);
  
  return date.getMonth()+'월'+date.getDate()+'일';
}
console.log(solution(11,27))


//1, 18 : 4월 27일 (+1)
//6, 22 : 9월 28일 (0)
//11, 27 : 3월 4일 (-1)

<성공 답안>

function solution(month, day){
	var date = new Date(2022, month-1, day+98);  //month : 0부터라 -1
	let getMonth = date.getMonth()+1;  //-1을 했기때문에 +1을 해줌
	let getDay = date.getDate();
  
   return getMonth+'월'+getDay+'일';     
}
console.log(solution(6,22))

👉🏻 사실 차이점이라면 Date 객체에 초기 day 값에 +98을 해주고 시작한다는 점인데 흠,,,
아직 의문이긴하다.
💡 (3/16 추가) 이유를 찾았다..! 실패한 답안에서는 초기 month를 그대로 두었고, 성공 답안에서는 -1을 설정해줬으므로 일단 month 값 자체가 달라서 각 월의 30일, 31일도 역시 다를 수 밖에 없는 것! date 부분에만 집중해서 month를 놓치고 있었다!


  1. 3진법과 10진법 등
function solution(n) {

    var reverse = n.toString(3)     //3진법으로 바꿔줌(Number.toString())
                   .split('').reverse().join('');   //0021
    return parseInt(reverse, 3);
    
}

//parseInt(string, n) : 문자열을 분석하고 특정 진수를 사용한 정수로 변환해 반환
profile
try & catch

0개의 댓글