스파르타코딩클럽 내일배움캠프4기 -15-

JaeSung Lee·2022년 11월 16일
0

내일배움캠프4기

목록 보기
15/24

프로그래머스 코딩 테스트가 생각보다 재밌다.
근데 어렵다.
근데 문제 해결했쥬 ㅎ
포기안하니까 다되죵 ㅎㅎ

분수의 덧셈

이 문제 3일간 물고 늘어졌다...
베스트 방법은 아니긴한데 그래도 풀이 영상 안보고 풀수있는게 어디냐...

  1. 분모, 분자 분리 한 후 더해준다.
  2. 최대공약수 구하기
  3. 나누기

간단하게 풀이가 되는데 막상 코드 짤려면 어렵다...

function solution(denum1, num1, denum2, num2) {
    denum = (denum1 * num2) + (denum2 * num1)
    num = num1 * num2
    //분자 분모 분리한 후 더한 식
    
    let minnumber
    if (denum < num ){
        minnumber = denum
    } else{
        minnumber = num
    }
    //최대 공약수 전 최소 값 구하기
    
    while(true){
        if(denum % minnumber === 0){
            if(num % minnumber === 0)
                return[denum/minnumber, num/minnumber]
        } minnumber = minnumber -1
    }
    // 최소 값 구한 것으로 최대공약수 구하기. 그리고 나누기
}

이것보다 더 간단한 방법이 많다 풀이 보니까
하지만 거기까지는 아직이다... 기댜려라...

reduce

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

const array1 = [1, 2, 3, 4];

// 0 + 1 + 2 + 3 + 4
const initialValue = 0;
const sumWithInitial = array1.reduce(
  (previousValue, currentValue) => previousValue + currentValue,
  initialValue
);

console.log(sumWithInitial);
// expected output: 10

배열 두 배 만들기

보기에는 진짜 간단하다.
배열에 곱하기 2만하면된다.. 근데 식으로 쓰려니까 어려웡...
그러다가 우연찮게 reduce 함수를 보았다.
한줄로 간단히 쓸수 있는식...
위에 리듀스 설명했으니 참고하길 바란다.
여튼 저렇게 푸니까 진짜 간단함...

각도기

생각보다 쉬운 문제인데
몇가지 안되는것이있다.
자바스크립트는 if문에는 한 조건에 한꺼번에 두가지 조건을 못건다...
무슨말이냐면 0 < angle < 90
이게 안된다는 소리다.. 그래서 &&(and)로 두개 조건을 만들었다.
0 < angle && angle < 90 이렇게 해야된다.
그리고 가장 기초적인 "===" 같다 표시... 조심좀하자.

양꼬치

6시간동안 헤맸따. 너무 빡쳐서 답을 볼까....? 하다가
보면 지는거 같아서 오기로 풀어냈다...

사실 엄청 간단한 문제처럼 보이는데 막상 할려니까 막 여기저기 꼬였다...
나만그런가...?
여튼 오기로 풀어냄...

function solution(n, k) {
    
    survice = Math.floor(n /10);
    
    answer = (12000 * n) + (2000 * (k-survice))
    
    return answer;
}



이건 다른 팀원분이 푼건데
왜 나는 이렇게 생각을 못할까 싶다...

function solution(n, k) {
    let answer = n * 12000 + k * 2000
    if(n >= 10) {
        answer -= Math.floor(n / 10) * 2000
    }     return answer; }

피곤하다 소주나 먹어야겠다.

profile
정말 최선을 다하겠습니다.

2개의 댓글

comment-user-thumbnail
2022년 11월 17일

집념이 정말 대단하시네요 ㄷㄷ 안보고 풀으신거 진짜 대단
알고리즘도 좋긴하지만 너무 많은 시간을 뺏기면 주객전도됩니다 ㅠㅠ
어떤 마음이신지 알지만 시간을 제한해놓고 공부해보시다 안되면 다음 공부 진행하시는게 지금은 더 좋을 것 같습니다!
고생많으셨어요~!

답글 달기
comment-user-thumbnail
2022년 11월 17일

어제 저 양꼬치 코드 한 열몇줄 적었는데 다른답안보고 현타왔습니다. 다 그러면서 느는거라고 하더라구요 ㅋㅋ

답글 달기