20220719 TIL 첫CS스터디, 알고리즘 모의고사, 항해톡, 알고리즘 풀이

codeing999·2022년 7월 19일
0

TIL/WIL

목록 보기
4/22


-알고리즘 시험보던 중. 풀이영상 찍는데 녹화가 자꾸 중단되서 푸는거보다 더오래 걸렸다.

CS스터디

@ 어제가 처음 모인거지만 발표는 오늘이 처음. 프로세서, 메모리, 디스크 등이 주내용이었는데 아직은 기초적인 부분이라 쉽게 이해되었다.
@ 우리팀은 하루에 3개씩 발표를 하고 3일 뒤 같은 주제로 더 심화있게 준비해서 또 발표하기로 하였다.

항해톡

@ 첫발표자분의 주제는 REST API였다. HTTP 리퀘스트와 리스폰스헤더에 JSON형식의 바디를 덧붙여 통신한다는 것 같았다. 통일되어 있기에 다른 기기와 브라우저, 언어 등에 상관없이 모두가 쉽게 관련된 코딩을 할 수 있다고 한다.
@ 두번째 주제는 객체 Literal과 구조 분해 할당이었다. 객체 Literal은 자료구조론에서 배운 구조체의 느낌이 났고. 구조 분해 할당은 편리한 기술이긴한데 필수인 기술은 아니라고 한다.

알고리즘 풀이

25.

function solution(left, right) { //약수갯수가 홀수이려면 1이거나 자연수의 제곱일 때뿐이라 그렇게 풀긴함. 
    var half;
    var sum = 0
    var square = 0;
    for (var i = left; i<=right; i++){
        half = Math.floor(i/2)
        if( i == 1)
            sum-=1;
        else{
            square = 0;
            for (j = 1; j<=32; j++){    //제약사항에 가장 큰수가 1000이길래 제곱해서 1000안넘는 최대수인 32까지만 돌림.
                if (i == j**2){ //제곱
                   square = 1;
                    break
                }
            }
            console.log(sum)
            if (square == 1)
                sum-=i;
            else
                sum+=i;
        }
    }
    var answer = sum;
    return answer;
}

@ 약수의 갯수가 홀수이려면 1을 일단 제외하고 생각하면 어떤 수의 제곱일 때일 뿐이란 생각이 들었다. 다른 약수들은 각자 쌍이 있을 거니깐. 그래서 그런 식으로 풀었다.
@ 제약사항에 최고크기가 1000이라길래 그럼 제곱해서 1000이 넘는 수는 생각할 필요도 없어서 32까지만 돌렸고, j**2 란 것도 사용했는데 제곱하는 다른 함수도 있던거 같은데 이것도 있네

29.

function solution(array, commands) {
    let temp = [];
    var answer = [];
    for (let i = 0; i<commands.length; i++){
        temp[i] = array.slice(commands[i][0]-1, commands[i][1]) //이번 문제에선 i번째라고하면 인덱스i가 아니라 실제 순서로 i번째라 -1붙임.
                    .sort((a,b)=>a-b)[commands[i][2]-1]; //slice의 끝범위는 미포함이네.
        
    }
    return temp;
   /* console.log(temp)
    for (let i = 0; i<commands.length; i++)
        answer[i] = temp[i][commands[i][2]-1];

    return answer;*/
}

@ 이번 문제에서 엄청 해맸다. 제출하면 다른 케이스는 다 맞추는데 딱 1가지 케이스에서 틀렸다. 근데 그게 무슨케이스인질 모르겠고 내가 볼 땐 코드 잘 짠거 같은데 어디가 틀린건지 모르겠어서 계속 붙잡고 있었다.
@ 틀린부분은 sort안에 (a,b)=>a-b 안넣어준 부분이었다. 배열 안에 있는 숫자들을 정렬할 때엔 저렇게 해야한다는 건 알고 있었는데, 이번 경우엔 예시 입력도 한자릿수 숫자들이었기도했고 순간적으로 저 부분을 계속 깜빡 해버린 듯.

profile
코딩 공부 ing..

0개의 댓글