분류 전체보기

    HTML 메타 태그란? meta tag

    메타 태그 메타 태그란 해당 HTML 페이지에 어떠한 내용이 들어있는지 미리 알려주는 것이다. 브라우저가 페이지를 해석하는데 도움도 주고, 검색엔진이 페이지를 읽을 때도 이 부분을 가져간다. 또한 SNS 에 공유할 때 나오는 썸네일 등도 이 부분에서 가져온다. 인코딩 정보 크롬과 같은 브라우저에서는 utf-8 을 사용하지 않아도 자동으로 인코딩을 고쳐주는 경우도 있다. 그러나 모든 사람이 크롬 브라우저만 사용하는 것은 아니므로 안정적인 동작을 보장해주기 위해서 위의 charset="utf-8" 을 적어주는 것이 좋다. 페이지의 저자와 내용 name 에 메타태그의 종류(name, description 등)를 입력하고, content 에 내용을 입력한다. og: 태그 og 태그는 Open Graph Data..

    HTML 최상단 !DOCTYPE html 의 의미

    개요 은 HTML 문서의 최상단에 작성되어야 한다. 브라우저가 문서를 렌더링 할 때 quirks mode (en-US)로 바뀌지 않도록하는 것이 유일한 목적이다. HTML 문서가 quirks mode 로 인식되면, 렌더링 과정에서 W3C 표준을 지원하지 않으므로 작성할 때 예상했던 결과와 다른 결과가 나올 수 있다. quirks mode 는 오직 옛날에 W3C 표준을 지키지 않은 HTML 문서들을 정상적으로 보여주기 위해 남아있는 호환용 모드이다. 파이어 폭스에서는 Page Info 에서 Render Mode 를 보여준다. 위의 Render Mode 항목이 Standards compliance mode 로 설정되어 있는 것을 볼 수 있다. 레퍼런스 MDN DocType 파이어폭스 Page Info Win..

    Two Pointers, 정렬된 제곱의 배열 구하기 (squares of a sorted array)

    문제 오름차순으로 정렬된 음수가 포함된 숫자 배열이 있다. 이 배열의 제곱 결과를 오름차순으로 정렬된 배열 형태로 만들어 보아라. ex) [-4,-1,0,3,10]가 입력으로 들어온다면, [16,1,0,9,100] 가 제곱한 결과가 되고 결과는 [0,1,9,16,100] 이 된다. 입력: [-4,-1,0,3,10] 출력: [0,1,9,16,100] 해법 1: 모두 제곱하고 정렬하기 말 그대로 제곱부터 먼저 구한 뒤에 모두 정렬하는 방법이다. 제곱할 때 N 의 복잡도가 들고, 정렬할 때 정렬 알고리즘에 의해 log N 의 복잡도가 나온다. class Solution { public int[] sortedSquares(int[] A) { int N = A.length; int[] ans = new int[N..

    Two Pointers, O(n) 의 복잡도로 문자열 뒤집는 방법 (reverse string)

    reverse string 배열 참조를 받아서 해당 배열을 reverse 된 배열로 변환하기 /** * @param {character[]} s * @return {void} Do not return anything, modify s in-place instead. */ var reverseString = function (s) { let l = 0; let r = s.length - 1; while (l < r) { const tmp = s[l]; s[l] = s[r]; s[r] = tmp; l += 1; r -= 1; } }; 순서를 뒤바꾸는 규칙 생각해보기 맨 첫번째 문자를 맨 마지막으로 옮긴다. 두번째 문자는 맨 마지막에서 두번째로 옮긴다. 세번째 문자는 맨 마지막에서 세번째로 옮긴다. n 번째 ..

    알고리즘, Two Pointers 기법

    Two Pointers 기법이란? 배열과 문자열을 다루는 문제에서 자주 사용되는 기법이다. 배열이 한 개일 때 사용 예시 abcdefg 라는 문자열이 있을 때 하나의 포인터는 문자열의 맨 앞인 a 를 가리키고 다른 하나의 포인터는 문자열의 맨 뒤인 g 를 가리킨다. 두 포인터를 움직이며, 로직을 수행하고 정답을 찾아낸다. 배열이 두 개일 때 사용 예시 abcdefg hijklmnop 라는 문자열 2개가 있을 때 하나의 포인터는 첫번째 배열의 맨 앞인 a 를 가리키고 다른 하나의 포인터는 두번째 배열의 맨 앞인 h 를 가리킨다. 두 포인터를 움직이며, 로직을 수행하고 정답을 찾아낸다. 이 방법의 장점 시간 복잡도가 O(n) 을 넘어가지 않는다. Two Pointer 기법으로 해결할 수 있는 문제 예시 팰린..

    자바에서 코틀린으로 6장 - 자바에서 코틀린 컬렉션으로 요약

    주안점 자바에서 출발한 컬렉션은 코틀린으로 오며 왜 지금의 형태를 띄게 되었는가? 자바 컬렉션 자바 컬렉션의 가변성은 처음에는 혁신적인 무기였음. 자바 컬렉션은 극단적 가변 컬렉션 컬렉션을 자유롭게 변경시켜 이용하며, sort, reverse 와 같은 메서드들은 이를 편하게 만들어 도왔음. 가변 때문에 만나게 된 에러 public static int sufferScoreFor(List route) { Location start = getDepartsFrom(route); List longestJourneys = longestJourneysIn(route, 3); return sufferScore(longestJourneys, start); } start 변수를 따로 빼둔 것이 별다른 정보를 알려주지 않기..

    알고리즘에서 문자열과 배열

    알고리즘에서 문자열과 배열 알고리즘의 입력 값은 문자열 혹은 배열로 들어오는 경우가 많다. 1차원 배열과 문자열은 보통 거의 동일한 구조를 가지고 있다. 언어마다 배열을 다루는 법은 매우 다르다. 자바스크립트의 경우, 배열이 매우 관대해서 크기도 늘었다 줄었다 하고 배열 내부 데이터 타입 제약도 없다. C 언어의 경우엔 크기가 고정이며, 동적으로 할당하고 싶다면 메모리 할당을 받아야 한다. 언어마다 문자열을 다루는 방법도 매우 다르다. C 는 가변이다. Python, Java 는 불변이다. 알고리즘에서 불변과 가변의 중요성 가변인 경우에는 일부만 문자를 변경할 수 있으므로 성능상 유리하다. 불변인 경우에는 일부의 문자를 변경하기 위해 새로운 문자열을 다시 만들어야 한다. 알고리즘 문제를 풀 때, 성능상의..

    flex 엘리먼트 꽉 채웠을 때 자동 줄넘김되게 하기

    flex 엘리먼트 꽉 채웠을 때 자동 줄넘김되게 하기

    문제 flex 레이아웃을 사용하는데, flex-direction: row 를 사용하면 강제로 부모 엘리먼트의 크기에 맞춰서 자식 엘리먼트의 크기를 줄여버린다. 원본 크기 그대로를 사용하면서 줄넘김이 될 수는 없을까? 해결 flex-wrap: wrap 속성을 사용하면 된다. 레퍼런스 https://developer.mozilla.org/en-US/docs/Web/CSS/flex-wrap

    img 태그 사용시 아래의 4px 의 미묘한 빈공간이 생기는 이유

    img 태그 사용시 아래의 4px 의 미묘한 빈공간이 생기는 이유

    문제 img 태그 이미지에 테두리를 주었을 때, 아래쪽에 미묘한 4px 의 빈 공간이 생긴다. 원인 이는 img 태그의 기본 display 속성이 inline 이어서 그렇다. inline 의 기본 vertical-align 은 baseline 이다. 이는 알파벳의 특성 때문에 설정되어 있는 부분인데, 'abc'와 다르게 'gjy'와 같은 알파벳은 기준선을 기점으로 아래쪽으로 튀어나와 있다. 이를 내림 영자 (descenders) 라고 한다. 해결 방법 vertical-align 을 middle 혹은 top 과 같은 다른 속성으로 바꾼다. 혹은 display 를 block 으로 바꿔준다. 다만 이 방법은 img 태그 자체가 display: block 을 따르게 되기 때문에 vertical-align 이 사..

    CSS display 속성의 특징

    display 속성의 특징 CSS 에서 display 속성은 해당 엘리먼트와 내부 엘리먼트가 어떤 모양을 가질지를 결정한다. 복잡해보이지만 실제 엘리먼트의 display 속성은 block 혹은 inline 두가지만 존재한다고 보면 된다. 참고: block or inline element flex, grid 와 같은 속성은 사실상 block 과 같은 속성인데, 자식 엘리먼트를 보여주는데만 그 차이가 있다. 자식 엘리먼트를 보여주는 방식도 보통 아래 3가지 중 하나를 따른다. 참고: flow layout, grid, flex display 속성을 모르면 삽질하기 쉬운 부분들 html 의 다양한 태그들에는 &#39;기본 display 속성&#39; 이 부여되어 있다. 이를테면 span 태그에는 inline 속..

    알고리즘에서 재귀 함수를 사용하는 이유는?

    재귀함수란? 자기 자신을 호출하는 함수이다. 반복문으로도 구현될 수 있다. 재귀 함수 예제 코드 (자바스크립트) function recursive(num) { // base case, stopping condition, 종료 조건 if (num > 3) { return; } console.log(`before call itself, num: ${num}`); recursive(num + 1); console.log(`after call itself, num: ${num}`); return; } 위는 아주 간단한 재귀 함수의 예이다. 위의 주석에서 base case 라고 표기된 부분은 재귀 함수를 그만 생성하며 재귀 종료가 일어나는 시나리오를 말한다. stopping condition, 종료 조건 이라고 ..

    알고리즘의 시간복잡도, 공간복잡도란? (feat. Big O Notation)

    Big O 표기법 (Notation) 이란? Big O 표기법이란 알고리즘의 컴퓨터적인 복잡도를 기술하는 방식이다. 시간 복잡도 와 공간 복잡도 로 나뉘게 된다. 시간 복잡도: 입력값이 늘어남에 따라 얼마나 실행 시간이 늘어나냐를 의미한다. 공간 복잡도: 입력값이 늘어남에 따라 얼마나 메모리 공간을 많이 차지하냐를 의미한다. 일반적으로 알고리즘 문제는 더 나은 공간 복잡도보단 더 나은 시간 복잡도를 요구한다. 실제 표기 예제 O(n) O(n2) O(2n) O(log n) O(n * m) 여기서 n 은 보통 입력으로 들어온 배열의 길이거나 문자열의 길이이다. Big O 표기법에서 상수는 무시된다 ex) O(2n) 이 있다면, O(n) 으로 표기하는 것과 같다. 위에서 시간 복잡도와 공간 복잡도 모두 '입력..

반응형