자바스크립트

    [javascript] 프로그래머스 - 괄호 회전하기(월간 코드 챌린지 시즌2)

    [javascript] 프로그래머스 - 괄호 회전하기(월간 코드 챌린지 시즌2)

    🤔문제 해결 괄호 회전 괄호 체크 스택을 이용하여 괄호의 짝이 맞는지 체크 주어진 괄호(회전을 마친 괄호)를 쪼개서 하나씩 가져온다 가져온 괄호가 왼쪽 괄호이면 스택에 넣고 오른쪽 괄호이면 스택의 제일 위에있는 괄호와 비교하여 짝이 맞는지 체크 짝이 맞지 않으면 올바른 괄호가 아니다. 스택이 비어있으면 올바른 괄호가 아니다. 괄호 체크가 끝나고 스택에 남아있는 괄호가 있으면 올바른 괄호가 아니다 💨 오브젝트의 키, 밸류 가져오기: Object.keys(my_object), Object.values(my_object) 💨 배열에 특정 요소 포함 여부: my_list.includes(my_elem) 💻소스 코드 function solution(s) { var answer = 0; var length = s...

    [javascript] 프로그래머스 - 거리두기 확인하기(2021 카카오 채용연계형 인턴십)

    [javascript] 프로그래머스 - 거리두기 확인하기(2021 카카오 채용연계형 인턴십)

    🤔문제 해결 한 방안의 모든 P에 대하여 차례로 주변을 탐색했다. 약간 BFS 느낌🤔 O를 만나면 계속탐색 P를 만나면 멈춘다. - 거리두기 지켜지지 않음 탐색 중 P에 대하여 거리가 2가 되면 더 이상 그 지점에서는 탐색을 멈춘다. 그러므로 탐색 중 다른 P를 만났다는 말은 거리가 2 이하이기 때문에 탈락 X는 무시 💨 파이썬으로 풀던 느낌으로 풀었다. break를 한번에 걸어주는 방법이 없나... 💻소스 코드 function solution(places) { var answer = []; var length = places[0].length; var dx = [-1, 1, 0, 0] // 상 하 좌 우 var dy = [0, 0, -1, 1] for (var place of places) { var ..

    [javascript] 프로그래머스 - 행렬 테두리 회전하기(2021 Dev-Matching: 웹 백엔드 개발자(상반기))

    🤔문제 해결 Array.from 을 이용하여 2차원 행렬 만들기 테두리 가져오기 범위 내에서 테두리만 오른쪽, 아래, 왼쪽, 위로 차례로 이동 이동하면서 값을 리스트에 저장, 2차원 배열의 값을 바꿔준다(회전) 리스트의 가장 작은 값을 answer 에 저장 💨 2차원 배열 만들기 Array.from, 배열의 최소값 구하기 Math.min.apply(null, []); 이것 보다는 Math.min(...[]); 이 좋아보임(일단 가독성) 💻소스 코드 function solution(rows, columns, queries) { var answer = []; // 1씩 증가하는 2차원 행렬 만들기 const arr = Array.from(Array(rows), () => new Array(columns));..

    [javascript] 프로그래머스 - 로또의 최고 순위와 최저 순위(2021 Dev-Matching: 웹 백엔드 개발자(상반기))

    🤔문제 해결 1. filter와 includes를 이용해서 로또 번호가 당첨 번호에 포함된 개수를 구함 2. filter를 이용해서 로또 번호의 0의 개수를 구함 3. 최소 당첨 개수는 그냥 당첨 개수 4. 최대 당첨 개수는 최소 당첨 개수 + 0의 개수 5. 순위를 구함 💨 💻소스 코드 function solution(lottos, win_nums) { var answer = []; var minWinningCnt = lottos.filter(number => win_nums.includes(number)).length; var maxWinningCnt = minWinningCnt + lottos.filter(number => number === 0).length; var rank = [6, 6, 5,..

    호이스팅(Hoisting)

    호이스팅(Hoisting)

    📔호이스팅이란 코드에 선언된 변수 및 함수의 `선언`을 코드 상단으로 끌어올리는 것을 말합니다. 해당변수의 범위에 따라 다르게 수행됩니다. 변수가 함수 내에 있다면, 해당 함수 안의 최상단으로, 변수가 함수 밖에 있다면, 스크립트의 최상단으로 끌어올립니다. 여기서 주의해야 할 점은 변수의 `선언` 부분만 끌어올린다는 것입니다. (변수는 선언 - 초기화 - 할당 의 과정을 거쳐 생성) 📔 변수 호이스팅 var를 쓰지 않기로 한 이유가 여기서 나타납니다. 함수를 선언해서 값을 할당하기 전에 콘솔을 찍어봤는데 에러가 아닌 undefined가 나옵니다. 바로 선언만 됐다는 의미인데 동작 코드는 다음과 같습니다. 선언 부분만 맨 위로 끌어올려지고 값을 할당하지 않았으니 undefined가 나옵니다. 다음 값을 할..

    async vs defer (외부 스크립트 파일 불러오기)

    async vs defer (외부 스크립트 파일 불러오기)

    📔 외부 스크립트 불러오기 html에 js파일을 불러오는 방법은 아래와 같이 세가지 입니다. 이렇게 기본으로 불러오는 것은 js의 로딩이 끝날 때까지 아무것도 하지 못하게 됩니다. async의 옵션을 주게 되면 js의 로딩에 들어가더라도 html문서의 렌더링을 막지 않습니다. 하지만 만약 js파일이 여러개라면 순서에 상관없이 먼저 다운로드 되는 js파일이 먼저 실행됩니다. (순서X) defer의 옵션을 주게 되면 async와 같이 js의 로딩에서 html의 렌더링을 막지 않습니다. 하지만 모든 js 파일을 다운로드 받아도 바로 로딩되지 않고 html의 렌더링이 끝난 후 순차적으로 로딩이 됩니다. defer를 쓰면 화면에 자바스크립트 실행되기 전에 페이지가 출력되는 점에 유의해야 하고, async를 쓰면 ..