전체 글

전체 글

    TIL - 20221006 (비트 연산자)

    주의! 본 게시물은 프로그래머스 '[1차] 비밀 지도' 문제에 대한 중요 내용을 포함하고 있습니다. 풀기 전이시라면 이 점 참고해주시길 바랍니다! 링크: https://school.programmers.co.kr/learn/courses/30/lessons/17681 문제를 읽고 처음 한 생각은 두 배열의 요소를 이진법으로 바꾼 다음 문자열로 만들어줘서 문자열 속 문자가 0 혹은 1중 하나라도 있으면 1로 만들고 1을 '#'으로 0을 ' '로 만들까라는 생각을 했었다. 다음 날 문제를 다시 천천히 읽어보니까 예전 파이썬으로 코딩 테스트를 준비하며 배웠던 비트 연산자라는 아이디어가 떠올랐다. 그렇게 자바스크립트에도 비트 연산자라는 개념이 있나 구글링을 통해 찾아보게 되었고 자바스크립트에도 존재해서 쉽게 해..

    TIL - 20221005 (continue 정리)

    코딩 테스트 문제를 풀다 보면 대부분의 문제에서 반복문을 사용하게 되는데 사용하다 보면 꼭 내가 원하던 방향과는 다른 방향으로 흘러가는 경우가 자주 있다. 예를 들어, 반복문 속 특정 조건에서는 다르게 행동하는 코드를 작성하고 반복문의 다음으로 넘어가고 싶다고 하면 continue를 사용하면 된다. 숫자 1부터 5를 출력하는 반복문 속 i가 3일 때, '3이다!'라는 문구를 출력하고 숫자 3은 출력하고 싶지 않다고 가정하자. for (let i = 1; i

    TIL - 20221004 (유클리드 거리와 맨해튼 거리)

    주의! 본 게시글은 프로그래머스 '키패드 누르기' 문제에 대한 중요 내용을 포함하고 있습니다. 풀기 전이시라면 이 점 참고해주시길 바랍니다! 키패드 누르기 문제(https://school.programmers.co.kr/learn/courses/30/lessons/67256)를 풀기 위해 내용을 읽어 보며 간단하다는 생각을 했다. 1,4,7은 무조건 왼쪽 3,6,9는 무조건 오른쪽이니 2,5,8,0만 신경 쓰면 된다고 생각했기 때문이다. 2,5,8,0은 현재 왼쪽 엄지 손가락과 오른쪽 엄지 손가락의 위치를 거리로 비교하여 가장 가까운 손가락이 누르면 되니깐 *버튼을 좌표 평면의 원점이라 생각하여 오른쪽으로 갈수록 x 좌표가 1 커지고 위로 갈수록 y 좌표가 1 커진다고 설정하여 일반적인 좌표 평면에서 거..

    TIL - 20221003

    오늘도 코딩 테스트를 풀며 배운 내용에 대해 기록하려 한다. toLowerCase()를 사용하면 문자열에 존재하는 대문자 전체가 소문자로 바뀌게 된다. 필자는 반복문을 이용하여 문자 하나하나가 대문자에 속하면 소문자로 바꾸는 과정을 진행했는데 이럴 필요가 없었다. 코드를 이런 식으로 작성했었는데 for (let i = 0; i = 'A' && str[i]

    TIL - 20221002 (JavaScript 특정 문자열 제거 정규 표현식)

    코딩 테스트에 나온 조건이거나 특정 문자열을 제거하고 싶은 상황이 있다고 가정해보자. 예를 들어, 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환 라는 조건이 있다고 가정해보자. 반복문으로 문자열의 인덱스를 확인하며 반복된 문자를 하나씩 지울 수도 있겠지만, 만약 '...'와 같이 되어있어서 '..'가 되었을 때 또 하나를 지워야 하는데 그러면 어떻게 코드로 구현할지 골치 아플 수도 있으며, 시간 복잡도에서도 불리할 수 있다. 이를 정규 표현식으로 깔끔하게 해결할 수 있다. 예시 속 조건으로 확인해보자. const str1 = '...,..'; str1.replace(/[.]+/g, '.'); // '.,.' 정규 표현식에서 [.]는 '.'를 찾겠다는 의미이며 여기서 +가 붙어서 '.'..

    TIL - 20221001

    JavaScript로 코딩테스트 문제를 풀며 배운 점을 기록하려 한다. split() 메서드에서 split('')와 같이 사용하면 한 문자씩 쪼개지며 공백도 ' '로 들어간다. 'abc'.split(''); // ['a', 'b', 'c'] 'abc '.split(''); // ['a', 'b', 'c', ' '] 'a' + 'b' = 'ab'와 같이 만들수도 있지만, 배열에서 join과 같은 메서드를 사용하면 더 쉽고 간단하게 만들 수 있다. 'a' + 'b'; // 'ab' ['a', 'b'].join(''); // 'ab' ['a', 'b'].join(' '); // 'a b'

    TIL - 20220930(JavaScript 객체에서 값을 기준으로 필터링하기)

    지금 당장 취직을 위한 코딩 테스트를 준비하는 건 아니지만 프론트엔드 개발자로서 JavaScript라는 언어를 잘 쓰려면 우리가 매일 쓰는 한국어처럼 JavaScript도 매일 써야 잘 쓸 수 있다고 생각해서 하루 한 문제씩 코딩 테스트 기출 문제를 풀어보고 있다. 문제를 풀면서 배열의 filter 메서드처럼 객체에 존재하는 키와 값에서 값이 일정 기준을 넘어가지 못하면 제거하는 기능을 만들고 싶었다. 먼저, reduce에 대해 알아야 한다. reduce는 배열의 메서드로 배열의 각 요소에 주어진 리듀서 함수를 실행하고, 하나의 결괏값을 반환한다. arr.reduce(callback[, initialValue]); callback: 배열의 요쇼에 실행하는 함수, 다음 네 가지 인수를 받을 수 있다. ac..

    TIL - 20220929

    TIL - 20220929

    오늘은 모던 JavaScript 튜토리얼에서 앵커 ^와 $의 여러 행 모드, 'm' 플래그에 대해 공부했다. 작성한 질문은 다음과 같다. 정규 표현식에서 m 플래그를 사용하면 여러 행 모드를 활성화할 수 있다. 여러 행 모드란, ` 을 사용해 만든 여러 줄의 문장을 뜻하며, 여러 행 모드는 ^와 $의 작동 방식에만 영향을 준다. 여러 행 모드에서 캐럿 기호 ^는 여러 행으로 이루어진 텍스트에서 각 행이 시작하는 위치에 검사하길 원하는 문자가 있는지 검사한다. 여러 행 모드에서 달러 기호 $는 여러 행으로 이루어진 텍스트에서 각 행이 끝나는 위치에 검사하길 원하는 문자가 있는지 검사한다.