728x90

getDate 은 설정한 날짜를 가져온다.

getDay 는 로컬날짜를 가져온다.

그렇기에 getDay()로 가져오면 값이 다르게 나올 수 있으므로 getDate()를 사용할 때가 있다.

반응형
728x90

const m = new Map();

m['a'] = 1234;

m['a'] -> 1234

m.has('a'); -> false

m.set('b');

m['b'] -> undefined

바로 대괄호로 넣어버리면 has를 이용하지 못한다.

set으로 넣은 것을 [ ] 로 가져오지 못한다.

반응형

'코딩 관련 > 자바스크립트' 카테고리의 다른 글

generator function  (0) 2023.10.19
getDay(), getDate()  (0) 2023.10.19
Javascript Template literal  (1) 2023.10.19
배열 초기화 & Json 값만 배열로 변경하기  (0) 2023.10.19
페이지 재로딩 시 상단 이동  (0) 2023.10.19
728x90
  • ES6에서 나온 문법 중에 Template Literal이라고 있다.

백쿼터 `

`란 백쿼터를 사용하는 문법으로 대게 줄바꿈 문자열을 간단하게 사용할 때 사용한다.

예를 들어서

<ul>

    <li>HI</li>

</ul>

를 기존에는

let template = '<ul>' + '<li>HI</li>' + '</ul>';

let template = '<ul>\n<li>HI</li>\n</ul>';

으로 사용했다.

let template = '<ul>\
<li>HI</li>\
</ul>';

이것도 가능하긴 하다.

 

ES6에서는 

let template = `

<ul>

    <li>HI</li>

</ul>

`;

이 가능하다.

TEMPALTE LITERAL

const hello = "hello";

let template = `

<ul>

    <li>${hello}</li>

</ul>

`;

문자열에 바로 변수가 넣는 것이 가능하다.

응용 변수만 넣을 수 있나?

아니다.

let friends = [{name:'라이언',age:5},{name:'라이언2',age:2},{name:'라이언3',age:3}];

let template = `<ul>${friends.map( freind => `<li>이름:${freind.name} , 나이: ${freind.age}</li>`).join('\n')}</ul>`

결과물: '<ul>\n<li>이름:라이언 , 나이: 5</li>\n<li>이름:라이언2 , 나이: 2</li>\n<li>이름:라이언3 , 나이: 3</li></ul>'

놀랍게도 변수에 map이나 forEach등이 가능하니 응용이 다채로울듯하다.

응용: 동적 할당


웹 사이트의 경우 동적으로 할당되는 요소들이 많은 데, 이 HTML을 관리하는 것이 쉽지는 않다. 

숨어있다는 표현이 올바를 것 같은데, 어느 곳에 있는지 찾기가 어려울 때가 빈번하게 있다.

 

이런 부분들이 모여 코드 개발 속도를 저하되게 만드는데 이를 해결 방법이 있다.

물론 위 문법으로 해결한다기 보다는 Dom요소에 기대에 해결한다는 것이다.

<script id="selector">
    `<ul>${friends.map( freind => `<li>이름:${freind.name} , 나이: ${freind.age}</li>`).join('\n')}</ul>`
</script>
 

Html 문서 내 body 태그 뒤에 이 script를 넣어둔다.

그리고 해당 태그 요소를 Dom으로부터 가져와서 js로 실행하면 동적 할당 시에 유용하게 사용할 수 있다.

let b = eval(`<ul>${friends.map( freind => `<li>이름:${freind.name} , 나이: ${freind.age}</li>`).join("\n")}</ul>`);
 
eval이란 마음에 들지 않는 요소를 이용한다는 점이 꺼림직하지만, 쓸 수 있는 수단을 모두 사용해서 해결한다는 점이 인상적이다.
반응형
728x90

배열 초기화

arr.length = 0;

 

Json 값만 배열로 변경

Object.values(json);

반응형
728x90

페이지를 아래로 스크롤한 상태에서 재로딩하면 그 자리 그대로 로딩하게 되는데 이런 구현 방식은 브라우저 해주지 않을까..? 

그런 불확실성에서 페이지 로딩 시 상단으로 무조건 로딩되어야 한다면 아래 코드를 추가하면된디.

window.addEventListener('beforeunload', function () {
    // 최상단으로 스크롤 이동
    window.scrollTo(0, 0);
});

해당 코드를 통해 페이지가 로딩되는 것을 고려하지 않아도 자동으로 재로딩시 상단 이동이 되어 편리하다.

반응형
728x90

console.log() 만 사용하는 당신 조금 더 목적에 맞는 함수를 사용해보는 것은 어떨까요?

일단 먼저 json을 테이블 형태로 찍는 

console.table()을 사용해보세요!

더 많은 정보는 아래 글에서 확인해보시길

- https://javascript.plainenglish.io/its-2022-please-don-t-just-use-console-log-anymore-217638337c7d

반응형
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/77885

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

난이도도 낮은 문제에, 월간 문제(코테)에 2번 문제로 나온 문제이다. 

문제를 읽어보면, 이진수 비트 연산에 관한 문제로 파악할 수 있다.

하지만 문제를 바로 알 수 있을까? 다른 방법으로는 생각할 수는 있지 않을까?

나는 2가지 접근 방법이 있었을 것 같다고 생각한다.

1. 찾는 방법
2. 만드는 방법

무식하게 찾는 방법은 꽤나 오래 걸린다. 그렇기 때문에 결국 이진수 비트 연산 방법으로 풀어야 한다.

해설은 공식 해설을 추천하니 다음 글을 보는 것을 추천한다.

프로그래머스 해설 - 

https://prgms.tistory.com/57 

반응형

'코딩 관련 > c++' 카테고리의 다른 글

[카카오 인턴] 보석 쇼핑 - C++  (0) 2024.03.02
광물 캐기 C++ 분석  (0) 2023.11.08
연속된 부분 수열의 합  (0) 2023.09.02
2018 KAKAO BLIND RECRUITMENT [3차] 압축, C++  (0) 2023.08.26
공원 산책 프로그래머스  (0) 2023.06.21
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/178870

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

먼저 문제를 읽었을 때, 각 구간의 값을 구하면 되겠다는 생각을 하게 되었다.

그래서 아래처럼 구하려고 했다. 구간 값에 현재 값을 더해서 구하는 방식

[ 1 2 3 4 5 ], k = 7

1  2  3  4  5
   3  5  9  12
       6  10 15
               ...

시간 초과가 발생했다. 어디가 느릴까?
작성한 예시에서 보면 삼각형을 형태를 이루어지는 것을 볼 수 있다. for문 2개로 O(n2)의 시간 복잡도를 가짐을 볼 수 있다.

문제에서 주어진 입력을 한번 볼까?
   5 ≤ sequence의 길이 ≤ 1,000,000
길이가 10^6으로 O(n2)으로 구하면 시간 초과가 발생할 수 있다.

그러면 시간 복잡도를 낮춰야할 건데 어떻게 낮출까?

two pointer란 방법으로 하면 된다. O(n)으로 구할 수 있다.

이 문제에서 최소 길이의 구간을 구하는 것이니 for문으로 돌면서 최소 길이 구간을 만날 때마다 구간을 업데이트하면 된다.

#include <string>
#include <vector>
#include <iostream>
using namespace std;

vector<int> solution(vector<int> sequence, int k) {
    vector<int> ans;
    
    int i = 0, j = 0;
    int sum = sequence[i];
    while(i < sequence.size() ) {
        if(sum == k) {
            if(ans.size() == 0) {
                ans = {i , j};   
            } else {
                int temp = ans[1] - ans[0];
                if(j - i < temp) {
                    ans = { i, j };
                }
            }
            sum -= sequence[i++];
        } else if(sum < k && j + 1< sequence.size()) {
            sum += sequence[++j];
        // } else if(sum > k) {
        } else {
            sum -= sequence[i++];
        }
    }
    
    return ans;
}

 

 

반응형

+ Recent posts