전체 글(52)
-
[JavaScript] 비동기 처리 방법 (promise, async & await)
https://whales.tistory.com/131 님의 글을 정리보며 내가 이해한 내용을 덧붙여보겠다! 동기는 요청을 보낸 후 응답을 받아야 다음 요청을 실행할 수 있다. 반면, 비동기는 요청을 보낸 후 응답과 관계없이 다음 요청을 실행한다. 따라서, 동시에 여러 작업을 처리할 수 있다. 비동기 ex) fetch, axios의 api 요청, setTimeout, 파일 읽기 아래는 동기/비동기의 차이를 명확히 이해할 수 있었던 이미지이다!! 비동기 코드를 처리하는 promise와 async & await를 알아보자. promise 하나의 함수를 인자로 받고, promise가 생성되는 즉시 인자로 받아진 함수(실행자 함수라고 함)도 즉시 실행된다. 실행자 함수는 다시 2개 함수(resolve, reje..
2023.03.19 -
[React-Native] ExpoCLI와 React Native CLI
react native를 사용하여 앱을 개발하는 방법은 크게 두 가지가 있다. 1. expo-cli 사용 2. react-native-cli 사용 expo-cli는 - 개발 시작과 배포가 매우 편리하다. - RN을 위한 설정이 미리 구성되어있어서 초기 설정이 간단하다. - 각 플랫폼의 IDE(android -> android studio, iOS-> Xcode)를 설치하지 않고도 시뮬레이터를 사용할 수 있다. 하지만, - 네이티브 파일을 제어할 수 없고, 모든 라이브러리를 사용할 수도 없다. - expo에서 제공하는 api만 사용 가능하고, 필요한 기능이 없어도 모듈을 만들어서 사용할 수 없다. ==> 개발하기 편리하지만, 기능이 제한될 수 있다. 따라서, 앱 기능 개발에 제한되지 않는다면 굿 react..
2023.03.19 -
[프로그래머스] 소수 찾기
소수는 1과 자기자신 외의 약수를 갖지 않는 수이다. 소수를 판별하기 위해 2부터 자기자신-1 까지 나누어지는지 확인해야 한다. 아래 두가지 방법을 통해 효율성을 높일 수 있다! 1. 약수는 짝을 가진다는 특징을 활용 10 = (1, 10), (2, 5), (5, 2), (10,1) 16 = (1,16), (2, 8), (4, 4), (8, 2), (16, 1) 이 짝은 자신의 양의 제곱근을 기준으로 지어진다. (10 -> 3.162.. 16 -> 4 ) 따라서, 2부터 자신의 양의 제곱근 까지 나누어지는지 확인하면 된다! 2. 모든 짝수는 소수가 아니다라는 특징을 활용 모든 짝수는 2로 나누어지기 때문이다. 따라서, 짝수의 소수 여부를 확인하지 않아도 되고(소수가 아니기 때문) 나머지 값들을 2의 배수..
2023.03.16 -
[React-Native] RN은 어떻게 작동할까?1 (가상 DOM)
가상 DOM에 대해 알아보기 전에 DOM이 무엇인지 알아보자! 별코딩님의 React의 가상돔 (Virtual DOM)이 뭔가요? (짱 쉬움) 영상을 보고 정리해보았다! : https://www.youtube.com/watch?v=gc-kXt0tjTM DOM이 무엇일까? 웹 사이트의 글, 버튼,, 하나하나를 요소라고 한다. 그리고, 이 모든 것을 담고 있는 것을 Document 문서라고 한다. DOM이란 웹 페이지의 요소를 트리 형태로 표현한 것이다. 우리는 DOM이 제공하는 api를 통해 DOM구조에 접근할 수 있고, 원하는 요소를 입맛대로 변경할 수 있다. 이 것을 DOM조작이라고 한다. ex) JS: getElementById( ), querySelector( ) 가상DOM이 무엇일까? 가상DOM을 ..
2023.03.15 -
[프로그래머스] 뉴스 클러스터링
자카드 유사도는 원소의 중복을 허용하는 다중집합에 대해서 확장한 문제이다. 1. 대소문자를 구분하지 않으므로 대문자로 통일(toUpperCase()) 2. str1, str2의 부분 집합 구함: 부분 집합에 문자 이외의 값이 없을 경우만 추가 3. str1, str2의 모든 부분 집합을 중복없이 구함 4. 모든 부분 집합이 str1, str2에서 몇 번 나오는지 구함 5. 모든 부분 집합의 교집합, 합집합 수를 구함 5-1. 교집합의 개수: str1, str2의 등장 최소값 5-2. 합집합의 개수: str1, str2의 등장 최대값 6. (교집합/합집합) * 65536 , 소수점 버리고 return 자세히 주석 달아두었으니 확인 !! function solution(str1, str2) { // 대소문자..
2023.03.15 -
[프로그래머스] 캐시
프로그래머스의 캐시 문제 풀면서 캐시에 대한 개념이 부족하여 문제자체를 이해하는데 시간이 걸렸다. 문제를 풀기 위해 필요한 기본 개념을 정리해 보았다. 캐시 히트(Cache Hit)란? : 참조하려는 메모리가 캐시에 존재하고 있을 때 (실행시간 1) 캐시 미스(Cache Miss)란? : 참조하려는 메모리가 캐시에 존재하지 않을 때 (실행시간 5) 캐시 크기(Cache Size)란? : 데이터를 저장하는 메모리 공간 LRU(Least Recently Used)란? : 가장 오랫동안 참조되지 않은 페이지를 교체하는 방식 새로운 데이터가 들어온 경우 캐시에 넣어준다. 캐시가 가득차있다면, 가장 오래된 데이터를 제거하고 넣어준다. 존재하는 데이터가 들어온 경우 해당 데이터를 꺼낸 뒤 가장 최근 데이터 위치로 ..
2023.03.13 -
캐시(캐시 히트, 캐시 미스)와 사용 구조
Cache가 무엇일까 ? 캐시(Cache)는 쉽게 말해 자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소이다.나중에 요청할 결과를 미리 저장해둔 후 빠르게 서비스 해줄 수 있다. 즉, 미리 결과를 저장해둔 값에 대해 요청이 오면 그 요청에 대해서 DB또는 API를 참조하지 않아도 된다. 캐시는 저장공간 계층 구조 중 저장 공간이 작고 비용이 비싼 대신 빠른 성능을 제공한다. 캐시 히트(Cache Hit)란?: CPU가 참조하려는 메모리가 캐시에 존재하고 있을 때캐시 미스(Cache Miss)란?: CPU가 참조하려는 메모리가 캐시에 존재하지 않을 때 캐시의 사용 구조1. Client가 Server에 데이터를 요청한다.2. Server는 Cache에 해당 데이터가 있는지 확인한다.3. 캐시에 데이..
2023.03.13 -
모바일 앱 종류
우리가 사용하는 앱은 개발 측면에서 여러 종류로 분류할 수 있다. 각 앱의 종류와 개발 시 장단점을 알아보자! 1. 네이티브 앱 안드로이드 휴대폰은 안드로이드 운영체제, 아이폰은 iOS 운영체제를 사용한다. 네이티브 앱은 안드로이드 폰, 아이폰 각각의 전용 앱의 각각의 운영체제에 최적화된 앱이다. 따라서, 네이티브 앱 개발은 각각의 운영체제에 맞는 앱을 개발하는 방법이다. 장점) 스마트폰의 모든 기능을 사용할 수 있고, 성능 또한 최대치로 활용할 수 있다. 단점) 안드로이드/iOS 개발자가 각각 필요하다. 개발에 소요되는 인력과 시간이 많이 필요하다. 2. 크로스 플랫폼 앱 네이티브 앱은 하나의 운영체제 당 하나의 코드가 필요한 반면, 크로스 플랫폼 앱은 하나의 코드로 두 개의 운영체제 앱 모두 만들 수..
2023.03.13 -
[프로그래머스] 타겟 넘버
주어진 리스트 값을 하나씩 접근하며 -, +부호를 달아주는 문제이다. DFS/BFS를 활용한 문제라고 한다. 이 문제를 풀면서 DFS/BFS와 완전탐색의 차이가 무엇인지 궁금해졌다. * 완전탐색을 베이스로 한 그래프 탐색 기법이다..! [1,1,1] 리스트와 [+, -]를 사용해 숫자 1을 만들 수 있는 경우의 수를 구하려면, 모든 방법을 확인해보아야 한다. 1. list의 idx 0의 값에 - 또는 + 부호를 할당하고, 합계를 나타내는 sum에 저장한다. 2. -1 / +1 을 각각 저장한 sum이 2개가 된다. * 이게 cache에 저장한다고 하는건가? 3. 두 sum에 각각 idx 1의 값에 -또는 + 부호를 할당 한 값을 저장한다. 따라서 sum이 4개가 된다. 4. 이를 idx가 끝에 도달할 때..
2023.03.10 -
동적 계획법(Dynamic Programming)
동적 계획법: 하나의 문제를 여러 작은 문제로 나누고, 작은 문제의 결과를 저장하여 큰 문제를 해결한다. 하나의 문제를 여러 개의 하위 문제로 나눈 다음, 결합하여 답을 도출한다. 하위 문제들의 결과를 저장한다.(Memoization, 메모이제이션) -> 동일한 문제가 나왔을 때 저장해둔 결과를 가져다 쓰며, 실행속도 빠르게 한다. 겹치는 부분 존재 DP는 작은 문제의 결과를 저장하고 재사용하여 문제를 푼다. 따라서, 동일한 작은 문제가 있을 때 사용한다. 최적 부분 구조 작은 문제의 최적 결과 값을 사용해 전체 문제의 최적 결과를 낼 수 있는 경우를 의미한다. 작은 문제에서 구한 최적의 결과가 큰 문제에서도 동일하게 최적으로 적용되는 경우이다. 동적계획법의 가장 대표적인 피보나치 수를 구현해보자! 피보..
2023.03.10