728x90
반응형

TIL의 회고 : 이번주 알게 된 점 총정리

이번주는 타입스크립트 기간이었다.

코딩앙마 - 타입스크립트를 여러차례 듣고, 게시물로 정리했고

노마드코더 - 타입스크립트 블록체인을 3일간 들었다.

마지막날은 정영훈 튜터님의 타입스크립트를 들을 예정

 

타입스크립트는 기본 개념만 들을 땐,

쉬운 것 같았으나 핸드북으로 보면

열심히 꼬아둔 느낌이어서 어렵게 느껴진다.

 

타입스크립트 기간은 2주니까

좀더 열심히 해야겠다.

 

https://pyoja.tistory.com/156

타입스크립트 정리내용

 

이번 주 목표 달성 여부

살짝 빠듯하긴 했지만 모든 목표는 달성했다.

초과 설정한 목표도 오늘내로 달성예정

- 타입스크립트 정리

- 그외 알고리즘문제풀이, deep dive 책, 산책 등

 

다음 주 목표 세우기

 

1) 타입스크립트 실전 공부(코딩)

2)  알고리즘 문제풀이

3) 자바스크립트 공부 병행

728x90
반응형
728x90
반응형

1. 문제점

프로그래머스 알고리즘 문제풀이 - 자바스크립트 [개미군단]

2. 시도해본 것들

우선 문제를 보자마자 게임알고리즘 짜는것 같아서 살짝 두근두근 했다.

문제를 이해했을땐 역시 '이건 어떻게 풀지...?'

몇분 고민하다가 장군개미5부터 구하면 어떻게든 되지 않을까라고 생각했다.

3. 해결과정

count = parseInt(hp/5)

parseInt() - 문자열을 정수로 바꾸는 함수입니다.

나누기후에 몫을 구하려고 찾았는데,이 함수를 이용하면 장군개미 수를 구할 수 있었다(몫 구하기)

 

그럼 나머지 3짜리 병정개미와 1짜리 일개미는 어떻게 구하지....?

모르겠다 노가다해야지ㅠㅠㅠ

 

4. 알게 된 점

 

나의 문제풀이

function solution(hp) {
    var answer = 0;
    var count = 0;
    //장군5 병정3 일1 ==>최소한 병력
    count = parseInt(hp/5) //장군개미 숫자
    if( (hp-(count*5)) === 4){ //나머지는 4,3,2,1 이니까 노가다..
        count += 2
    } else if ( (hp-(count*5)) === 3 ){
        count += 1
    } else if ( (hp-(count*5)) === 2 ){
        count += 2
    } else if ( (hp-(count*5)) === 1 ){
        count += 1
    } else {
        count;
    }
    return count;
}

 

 

남의 문제풀이

function solution(hp) {
    const 장군개미 = Math.floor(hp / 5);
    const 병정개미 = Math.floor((hp - (장군개미 * 5)) / 3);
    const 일개미 = hp - ((장군개미 * 5) + (병정개미 * 3));
    return 장군개미+병정개미+일개미;
}

 

이게 내가 풀고 싶었던 풀이방법이다ㅠㅠ

병정개미는 나머지값을 나눠서 구할 수 있었고, (3보다크면 1 작으면 0)

일개미는 나머지를 구했으니 총합에서 장군+병정을 뺀 값

 

한줄만에 멋지게 풀순 없지만

저런식으로 깔끔하게 풀고 싶었는데 아쉽다.

728x90
반응형
728x90
반응형

1. 문제점

프로그래머스 알고리즘 문제풀이 - 자바스크립트 [제곱수 판별하기]

2. 시도해본 것들

2의 제곱은 4..

4의 제곱은 16.. 이걸 어떻게 해야하지...? 고민했다

당연히 답은 안나왔다ㅠㅠ완전 수학문제자너!

3. 해결과정

Math.sqrt(n) 루트 또는 제곱근

갑자기 중학수학의 개념을 찾아봤다ㅋㅋㅋㅋ

 

루트 또는 제곱근을 씌웠다면 무조건 정수가 나온다.

예를 들어 루트4는 2이듯이 1로 나눈 나머지값이 0이라면 된다!

4. 알게 된 점

 

나의 문제풀이

못풀었다....

 

 

남의 문제풀이

function solution(n) {
    var answer = 0;
    let sqrt = Math.sqrt(n);
    if (sqrt % 1 !== 0) { // 나머지를 이용해 소숫점 판별, 제곱근이 아닐 경우
        answer = 2;
    } else {
        answer = 1 // 제곱근일 경우, 나머지가 오직 0
    }
    return answer
}

 

루트 또는 제곱근을 씌우고,

1로 나머지를 구할때 0인지 아닌지로 판별!

728x90
반응형
728x90
반응형

1. 문제점

프로그래머스 알고리즘 문제풀이 - 자바스크립트 [자릿수 더하기]

2. 시도해본 것들

일반 숫자를 문자열로 만들고, 배열로 만들고, 다시 숫자로 바꿔야하나.....

깔끔하지 않아보이지만 내가 할 수 있는 유일한 방법이란 생각도 들었고

다시 개념정리 하기 위해 사용해보았다.

3. 해결과정

n은 임의의 숫자

//  숫자를 문자열로 변경
    const str = String(n);  
//  문자열을 배열로 변경
    const newArr = Array.from(str)

// 배열값을 숫자로 변경

    answer += Number(newArr[i])

4. 알게 된 점

 

나의 문제풀이

function solution(n) {
    var answer = 0;
//  숫자를 문자열로 변경
    const str = String(n);  
//  문자열을 배열로 변경
    const newArr = Array.from(str)
    
    for (i=0; i<newArr.length; i++){
// 배열을 숫자로 변경
        answer += Number(newArr[i])
    }
    return answer

}

타입변경하며 폭풍 노가다..!

 

남의 문제풀이

function solution(n) {
  return n
    .toString() //숫자의 문자화
    .split("") // 배열화 ["1","2","3","4"]
    .reduce((sum, str_num) => sum + Number(str_num), 0);
    
    //reduce함수는 누적시켜가는 내장함수로 생각하자
	//sum에 합계로 받을 시작점 0을 넣어준다.
    //str_num은 누적시켜갈 숫자를 더해야하는데 문자열 "1" 상태니 숫자화 시킨다
    //0에서 시작하여 배열의 내용을 모두 숫자화해서 더하면 끝
}

 

reduce가 뭔지 몰라서 검색 했을 때 다음과 같은 예시가 나왔다.

 

const arr1 = [ 1, 2, 3, 4, 5 ];
arr1.reduce((a, b) => a + b); // 15

 

그런데 마지막에 0은 없어서 팀원에게 질문했더니 acc의 시작값이라고 했다.

첫번째 인자는 일종의 let sum = 0 과 같은 거고,

reduce는 누적시켜주는 함수라고 생각하면 된다고 했다.

 

현재 문자열을 배열화한 상태로 ["1", "2", "3"[

이런식으로 들어가 있기 때문에 합계부분은 acc는 0 (숫자)

그 뒤 cur에는 "1" , "2" 가 들어가기에 Number로 숫자화해서 더해주면 된다. 

728x90
반응형
728x90
반응형

1. 문제점

프로그래머스 알고리즘 문제풀이 [문자열안에 문자열]

2. 시도해본 것들

for문으로 하나씩 비교해야하나 고민했다.

각각 존재하는지는 확인 가능하겠지만

연속으로 붙어있는지는 어떻게 확인해야할지 고민했다.

3. 해결과정

구글링을 통해 [자바스크립트 문장에서 단어찾기]를 했더니

indexOf()라는 함수가 나왔다.

단순히 노가다해야하는 문제인줄 알았는데,

문장내에서 단어를 찾는 내장함수가 있을 줄이야!

 

4. 알게 된 점

 

나의 문제풀이

function solution(str1, str2) {
    if(str1.indexOf(str2) !== -1){
        return 1;
    } else {
        return 2;
    }
}

indexof 대신 search로 대체할 수 있다.

 

남의 문제풀이

function solution(str1, str2) {
    return str1.includes(str2) ? 1 : 2;
}

includes 특정 문자열을 포함하는지 확인하는 함수로 true, false를 반환한다.

728x90
반응형
728x90
반응형

1. 문제점

프로그래머스 알고리즘 문제풀이 [배열의 유사도]

2. 시도해본 것들

지금 내수준에서는 동일한 값일시 반환하면 되니

이중포문을 써야겠다는 생각이 들어서 바로 실현했다.

3. 해결과정

s1과 s2가 같다면 새로 만든 s3 배열에 추가하고

반환값을 s3의 길이로 하면 되겠구나라고 생각했고 바로 풀 수 있었다.

 

4. 알게 된 점

 

나의 문제풀이

function solution(s1, s2) {
    var s3 = [];
    for (i=0; i<s1.length; i++){
        for(j=0; j<s2.length; j++){
            if(s2[j]===s1[i]){
                s3.push(s2[j]);
            }
        }
    }
    return s3.length;
}

남의 문제풀이

function solution(s1, s2) {
    const intersection = s1.filter((x) => s2.includes(x));
    return intersection.length;
}

filter와 includes를 통해 깔끔하게 정리

분명 배웠던 내용인데 실전에 사용해본적이 없어서

나중에 저렇게 능숙하게 써먹고 싶다. 오늘은 저 내용을 분석해봐야지.

728x90
반응형
728x90
반응형

TIL의 회고 : 이번주 알게 된 점 총정리

이번주는 소켓 공부시간이었다.

스파코에서 제공한 강의는 유튜브로 총 45분 소켓강의

기본지식도 없이 들었는데 무슨 소리인지 하나도 몰라서

노마더코더 무료강의를 통해 소켓강의를 들었다.

 

자바스크립트 복습용으로 강의 먼저 듣고,

실시간 채팅방 만들기, 비디오/오디오 공유하는 Zoom 클론코딩을 해보았다.

 

웹소켓은 만들기 어렵지만 소켓I.O를 통해 쉽게 구현할 수 있다는 것이 신기했고

실시간이다보니 다른 목차보다 더 재밌었다.

 

스파코 강의에 기댈 수 없으니

좋은 강의와 정보 등을 찾아가는 수 밖에 없을 것 같다.

 

이번 주 목표 달성 여부

자바스크립트 복습 및 웹,소켓I.O 강의 모두 수강완료했고

하나하나 분석하고 이해할 수 있어서 목표달성한 한주였다.

 

다음 주 목표 세우기

1) 타입스크립트 공부

2) 소켓 복습

3) 자바스크립트 공부 병행

728x90
반응형
728x90
반응형

1. 문제점

프로그래머스 알고리즘 문제풀이 [중앙값 구하기]

2. 시도해본 것들

 

3. 해결과정

배열안에서 중앙값을 구하려면 인덱스 평균값을 구해야 한다.

Math.floor(array.length / 2)

 

배열을 차순정리해야한다.

array.sort((a,b)=>a-b);

 

4. 알게 된 점

 

나의 문제풀이

function solution(array) {
    const mid_num = Math.floor(array.length/2);
    const mid_array = array.sort((a,b) => a-b);
    return mid_array[mid_num];
}

남의 문제풀이

function solution(array) {
  return array.sort((a, b) => a - b)[Math.floor(array.length / 2)];
}
728x90
반응형

+ Recent posts