728x90
반응형

1. 문제
프로그래머스 알고리즘 문제풀이 - 자바스크립트 [ 가장 큰 수 찾기 ]

2. 시도해본 것들

정말 오랜만에 보자마자 풀이법이 떠오른건 처음이었다.

가장 큰수 = Math.max()

인덱스값 = indexOf()

 

4. 알게 된 점

나의 코드

function solution(array) {
    const idx = array.indexOf(Math.max(...array))
    const maxValue = Math.max(...array)
    return [maxValue, idx];
}

1분만에 풀 수 있었다! 맨날 머리싸메다 상큼하게 푸니 기분좋았다.

보통 Math.max(1,2,3) 이런식이겠지만 배열이 들어간다면

스프레트 연산자를 이용하여 Math.max(...array)로 넣어줘야 한다.

 

 

남의 코드

function solution(array) {
    let max = Math.max(...array);
    return [max, array.indexOf(max)];
}

같은 풀이지만 더 짧게~

728x90
반응형
728x90
반응형

1. 문제
프로그래머스 알고리즘 문제풀이 - 자바스크립트 [ 인덱스 바꾸기 ]

2. 시도해본 것들

서로 순서만 바꾼다?

흠 우선 첫번째

let str = [...my_string]   //문자열=>배열화

 

두번째, 서로 맞교환이 어려우니까 한개를 저장해둔다 => let cart = str[num1];

세번째, 마저 교환하고 str.join('')으로 배열=>문자열(압축)

 

4. 알게 된 점

나의 코드

function solution(my_string, num1, num2) {
    let str = [...my_string];
    let cart = str[num1];
        str[num1] = str[num2];
        str[num2] = cart
    return str.join('');
}

지금까지 배운 것들을 다시 복습한 느낌이어서 좋았다.

 

 

남의 코드

function solution(my_string, num1, num2) {
    my_string = my_string.split('');
    [my_string[num1], my_string[num2]] = [my_string[num2], my_string[num1]];
    return my_string.join('');
}

구조분해할당?

내껏도 맘에 들지만 이 코드는 굉장히 깔끔하다.

728x90
반응형
728x90
반응형

1. 문제
프로그래머스 알고리즘 문제풀이 - 자바스크립트 [ 배열 회전시키기 ]

2. 시도해본 것들

뭐지 엄청 어려울것 같다라고 생각했다가

배열 공부했을때 맨앞 맨뒤에서 자유롭게 빼고 더할 수 있던것이 생각났다.

구글에 shift pop 을 검색하니 원하는 글이 나왔다.

 

push() = 배열 끝 추가

pop() = 배열 끝 제거

unshift() = 배열 첫 추가

shift() = 배열 첫 제거

 

3. 해결과정

입력은 right와 left만 받으니

if문이면 충분하고, 경우의 수는 2가지니

어떤 로직으로 결과값이 출력되는지 확인했다.

 

right는 맨끝에 있던애가 맨앞으로 오네?

left는 맨앞에 있던애가 맨뒤로 가네?

 

 

4. 알게 된 점

나의 코드

function solution(numbers, direction) {
    var answer = [];
    if(direction == "left"){
        var shift = numbers.shift();
        numbers.push(shift);
    } else{
        var pop = numbers.pop();
        numbers.unshift(pop);
    }
    return numbers;
}

 

 

 

남의 코드

function solution(numbers, direction) {
    if(direction === "right"){
        numbers.unshift(numbers.pop());
    }else{
        numbers.push(numbers.shift())
    }
    return numbers;
}

변수선언 없이 깔끔하게 사용하는 방법!

 

728x90
반응형
728x90
반응형

1. 문제
프로그래머스 알고리즘 문제풀이 - 자바스크립트 [ 주사위의 개수 ]

2. 시도해본 것들

처음에 문제를 읽고 이해하는데 조금 시간이 걸렸다.

입체도형이라니 너무 어려워보여서 포기하고 넘어갈까?

그래도 한번 시도라도 해봐야지! 하고 머리를 굴려보았다.

 

box [ 10, 8 , 6 ] , n=3정육면체 , 12개  

 

해당 박스에 12개가 들어가는 과정을 머리속으로 생각했다.

 

3. 해결과정

가로10 세로8 높이6 일때 3정육면체는

가로10에서 3개 들어가고

세로8에서 2개 들어가고

높이6에서 2개 들어가네?

3*2*2=12

 

모두 n정육면체로 나눴을때 몫의 값!

 

몫을 구하는 함수는 parseInt()이므로 이것만 있으면 답을 구할 수 있다!

 

 

4. 알게 된 점

나의 코드

function solution(box, n) {
    return parseInt(box[0]/n) *  parseInt(box[1]/n) * parseInt(box[2]/n)
}

난생 처음으로 1줄로 문제풀어서 뿌듯!ㅎㅎ

 

남의 코드

function solution(box, n) {
    let [width, length, height] = box;
    return Math.floor(width / n) * Math.floor(length / n) * Math.floor(height / n);
}

나랑 똑같지만,  변수명을 이쁘게 적어두셨다

function solution(box, n) {
    return box.reduce((acc,v) => acc * Math.floor(v / n), 1);
}

누산기 사용

function solution(box, n) {
    return box.map(v=>~~(v/n)).reduce((a,v)=>a*v,1);
}

맵핑......~~ 사용은 처음봐서 이해가 안되는 코드ㅠ

728x90
반응형
728x90
반응형

1. 문제점
프로그래머스 알고리즘 문제풀이 - 자바스크립트 [ 문자열정라하기 (1) ]

 

2. 시도해본 것들

1) 문자열안에서 숫자만 뽑아온다.

2) 오름차순으로 정렬한다.

 

처음에 봤을땐 쉬울 것 같았다.

if문에서 typeof로 number인지 비교하면 되지않을까?

결과적으로 실패하였고 다른 방법을 찾아야 했다.

 

3. 해결과정

우선 문자의 배열화는 다음과 같이 하였다.

let arr = [...my_string]

이전에는 array.from()함수를 썼지만 위의 방법이 더 간단해서 좋다.

 

그럼 문자열안에서 숫자만 가져오는 방법이 뭐가 있을까?

parseInt() 함수를 사용한다.

만약 배열안에 값이 숫자가 아니라면 NaN을 반환하기에 이를 조건문에 넣으면 된다.

 

이제 마지막 오름차순을 하는 방법은 다음과 같다.

answer.sort( (a,b) => a-b)

반대로 내림차순은?

answer.sort( (a,b) => b-a)

원리는 잘모르지만 외우기로 했다.

 

 

4. 알게 된 점

나의 코드

function solution(my_string) {
    let answer = [];
    let arr = [...my_string]
    for(i=0; i<arr.length; i++){
        let val = parseInt(arr[i]);
        if(!isNaN(val)){
            answer.push(val);
        }
    }
    return answer.sort((a,b) => a-b);
}

 

남의 코드

function solution(my_string) {
    return my_string.match(/\d/g).sort((a, b) => a - b).map(n => Number(n));
}
function solution(my_string) {
    return my_string.split("").filter((v) => !isNaN(v)).map((v) => v*1).sort((a,b) => a-b)
}
728x90
반응형
728x90
반응형

1. 문제점
백앤드는 손도 못댔다는 것이 문제!!!

 

2. 시도해본 것들

계층별로 나누니까 더욱 어려웠다.

어렵다는걸 얘기하지도 못했고, 그저 프론트만 만들었다.

 

3. 해결과정

이번 프로젝트는 나에게 실패다.

대부분 프로젝트를 통해 얻어가는 것이 있을텐데

이번엔 남는 것이 없는 것 같다.

그나마 실패했다는 사실, 다신 반복하지 말아야겠단 생각이 들었다.

 

4. 알게 된 점

아쉬운점:

실력부족으로 인해 백엔드 참여 못한 점이 아쉬웠습니다.

부족한 건 부족하다고 말하고 도움을 구했어야 했는데,

말을 하지 못해서 이번 프로젝트에선 성장하지 못한 것 같고

팀에 도움이 못된 것 같아서 죄송합니다.

 

개선사항:

최우선적으로 개인실력 향상이 제일 필요합니다.

그리고 마지막 프로젝트는 팀원들과 소통을 더욱 많이 해야하고,

전체적인 청사진과 시간계획 배분을 잘해야 겠다는 생각이 들었습니다.

 

728x90
반응형
728x90
반응형

1. 문제점

문제가 너무 많아서 문제

2. 시도해본 것들

장바구니를 백앤드로 구현해보고,

프론트는 회원가입, 로그인, 제품상세조회 등 작성

 

3. 해결과정

각자 역활을 맡아서 구현중

맡은 백앤드를 구현했으니, 남은 시간은 프론트 위주로 진행하였다.

 

4. 알게 된 점

미리 구조를 짜는 것도 어렵고,

각자 파트를 나눠서 진행하여도 막히거나 엮인것이 많으니 소통하는 시간이 길어졌다.

사람이 모이면 조율하는게 역시 어렵다.

728x90
반응형
728x90
반응형

1. 문제점

2. 시도해본 것들

오전에 발제내용을 확인했다.

이커머스 홈페이지를 만들고

소켓활용과 아키텍처 패턴, 테스트코드 작성, 장바구닝 기능 등

이전과 비슷하지만 추가해야할 기능이 늘어났다.

 

3. 해결과정

우선 팀원끼리 첫날이니 S.A 작성하고 API, 데이터모델링을 했다.

기본을 튼실하게 쌓고 가는게 좋을 것 같았다.

 

4. 알게 된 점

프로젝트 시작전에 중요시 해야할 부분과 협업git활용을 배웠다.

팀원끼리 상의를 통해 모두 정리하니

저녁시간이었고, 남은 시간은 프론트쪽 html을 가볍게 만들어보았다.

오늘은 머리싸매고 하루종일 정리하였으니

내일부턴 하루종일 코딩할 것 같다.

728x90
반응형

+ Recent posts