23일(2022.01.20 6시간 12분)

roadzmoon76·2022년 1월 20일
0

매일 공부

목록 보기
24/217

소수 만들기

https://programmers.co.kr/learn/courses/30/lessons/12977?language=javascript

function prime (number) {
    for (let i = 2; i<number; i++) {
        if (number % i === 0) {
            return false;
        } if (i === number-1) {
            return true;
        }
    }
}

function solution(nums) {
    let answer;
    let newNums = [];
    let n;
    
    for (let i = 0; i<nums.length-2; i++) {
        for (let j = 1; j<nums.length-1; j++) {
            for (let k = 2; k<nums.length; k++) {
                if (i<j && j<k) {
                    if (prime(nums[i] + nums[j] + nums[k]) === true) {
                        n = i + j + k;
                        newNums.push(n);
                    }
                }
            }
        }
    }
    answer = newNums.length;
    return answer;
}
  • 처음 아이디어는 prime이라는 비어있는 배열을 만들어서 해당 조건을 만족하는 숫자 세개의 집합 자체를 요소로 갖게한후 prime.length 로 답을 구하려다가 집합을 요소로 갖게하는법을 모르겠어서 다른 방법을 찾다가 굳이 필요 없다는걸 알았다. i + j + k 가 소수면 answer += 1 이 됐으면 더 깔끔했다
  • 처음에 오류났을때 메인함수만 살펴보다 오류를 못찾았었는데 알고보니 소수판별함수가 문제였다 항상 모든 함수를 살펴보자
  • 소수판별함수 for문을 다 돌았다면 그 자체가 소수란 소리니 for문 밖에 return true 만 써줬음 더 깔끔했다
  • i<j && j<k 를 안쓰고 j=i+1, k=j+1 로 정의했으면 더 깔끔했다

오답노트 반영 코드

function prime (number) {
    for (let i = 2; i<number; i++) {
        if (number % i === 0) {
            return false;
        }
    } return true;
}

function solution(nums) {
    let answer = 0;
    
    for (let i = 0; i<nums.length-2; i++) {
        for (let j = i+1; j<nums.length-1; j++) {
            for (let k = j+1; k<nums.length; k++) {
                    if (prime(nums[i] + nums[j] + nums[k]) === true) {
                        answer += 1;
                    }
                
            }
        }
    }
    return answer;
}

Prep Guide STEP 4 Selecting Elements

  1. id이름을 선택 : document.getElementById("");

  2. 클래스 이름을 선택 : document.getElementsByClassName("");
    결과값은 배열과 유사하므로 인덱스로 접근(element's')

  3. 태그 이름을 이용하여 선택 : document.getElementsByTagName("");
    결과값은 배열과 유사하므로 인덱스로 접근(element's')

  4. CSS 선택자를 이용하여 선택 : document.querySelector("." or "#");
    querySelector 함수는 모든 경우에 "하나의 요소"를 반환
    주어진 CSS 선택자와 일치하는 요소가 여러 개일 경우, 가장 첫번째 요소를 반환
    document.querySelectorAll("p") 하면 모든 p태그들을 배열의 형태로 반환. 요소를 제어하려면 인덱스 위치 사용

5.부모자식 : 모든 돔 엘레멘트에는 parentElement; 라는 속성이 있음
예를들어 id를 이용해 span태그를 잡아놨는데 내가 필요한건 그 span태그의 부모인 div 태그라면 span.parentElement; 하면 됨

형제(옆에뒤에위치한) 요소를 잡고 싶다면 nextElementSibling; 속성이용
span.nextElementSibling 하면됨
그 전 형제는 previousElementSibling;

자식요소는 .children; 속성이용
span.children; 은 유사배열의 형태이므로 length라는 속성이 있고, 인덱스 위치 사용

Prep Guide STEP 4 Manipulating Elements, Creating Elements


example 1은 기존에 있는 something 자체의 text가 변하면서 대체되어서 기본의 0,1,2,3 이 써있던 something이 사라져서 결국 4가 써있는 something만 body에 추가됨

example 2는 something 이 for 문 안에서 선언되어서 i가 카운트 될때마다 그때그때에 독립적인 변수로서 작동해서 0,1,2,3,4가 모두 기록됨

코어자바스크립트 ~15쪽까지 읽음

profile
크론병걸린 자퇴생, 개발자되기

0개의 댓글