분류 전체보기
-
백준 10430번 : 나머지 (모듈러 연산)CS & Algorithm & Data Structure & C/C++ 2023. 8. 15. 07:43
※ 문제 풀기 전 알면 좋은 지식! - 모듈러 연산 (Modular Arithmetic) 모듈러 연산은 양수를 나눌 때 사용하는 특별한 방법이다. 주로 순환성을 모델링하는데 유용한데, 대표적인 순환성 계산이라고 한다면 시간이나 요일 등이 있을 것이다. 만약 "n일 후"의 요일을 구한다고 생각해보자. 이 때, 1은 월요일, 2는 화요일 ... 7은 일요일을 나타낸다. 그렇다면 "O요일의 n일 후는 무슨 요일"일까? 계산식은 아래와 같다. A mod B = R 10 mod 3 = 1 이는 나머지 값을 나타내는 것으로 mod 연산자를 사용하게 된다. 그래서 월요일의 8일 후라고 하면 (1 + 8) % 7 = 2가 되어서 2는 화요일을 의미한다. 금요일의 15일 후는 (5 + 15) % 7 = 6이 되고, 6은..
-
Web worker(웹워커)에 대해서 알아보자Front-end/Javascript 2023. 8. 14. 11:49
이번에 web-worker를 사용할 일이 생겨서 web-worker에 대해 간단히 정리를 해보려고 한다. 우리 프로젝트의 경우, CSV 파일로 바꿔서 다운로드 할 수 있도록 만드는 경우에 사용하고 있다. Web worker란? Web worker는 Javascript 기반의 기술이며 주로 웹 브라우저 환경에서 사용된다. 이는 멀티스레딩을 지원하기 위한 기술로 별도의 백그라운드에서 실행되며, 메인 스레드와 별개로 작업이 이루어진다. Javascript를 사용하는 사람들이라면 Single-thread에 대해 많이 들어봤을 것이다. V8 엔진에는 스택이 있는데, 여기서 LIFO 방식으로 하나씩 쌓이고 또 실행이 된다. 그러다보니 만약 많은 양의 데이터나 복잡한 로직을 사용하게 된다면 하나씩 처리되어야 하는 스..
-
C++ 중복 없애기 (unique, erase)CS & Algorithm & Data Structure & C/C++ 2023. 7. 1. 19:21
중복을 없애고 순서대로 만드는 작업은 문제를 풀다보면 많이 사용되는 방법이다. C++에서 중복을 없애는 방법에 대해서 알아보자. unique라는 함수를 사용하게 되면 범위 안의 요소 중에서 앞에서부터 비교해가며 중복되는 요소를 제거하고, 중복되지 않은 것은 그대로 두게 된다. 그런데 unique만을 단독적으로 사용하게 되면 원하는 모습을 찾을 수 없다. 아래 예시를 보자. #include using namespace std; int main() { vector v{5, 5, 6, 6, 7, 3, 3, 2, 1, 1, 2, 2, 3, 4, 5, 8, 7, 8, 7, 9, 9}; auto it = unique(v.begin(), v.end()); for(int i : v) cout
-
타임존(UTC, GMT)과 날짜 포맷(Date format) 그리고 luxon그 외 다양한 웹 지식 2023. 6. 28. 19:08
날짜 포맷 변환 기능에 대한 적용을 하다가 정리를 조금 해놓으면 좋겠다고 생각되어 관련한 정보에 대한 글을 올려놓으려고 한다. 날짜 변환에 대해 접근하기 위해서는 우선 GMT, UTC, 날짜 포맷에 대해서 알아야한다. 더불어 luxon을 이용하려면 IANA도 알고 있으면 도움이 된다. UTC UTC는 Coordinated Universal Time의 줄임말이다. [ 참고 ] Q : Coordinated Universal Time을 줄이면... CUT 아닌가...? A : 초기에 영어권 사람들과 프랑스어권 사람들이 각각 자신들의 언어인 CUT와 TUC로 하기를 원했다. 그런데 두 언어 모두 C, T, U로 구성되어 있다는데 착안하여 UTC로 하였다. 또한 그로 인해서 시계시(UT)와 그 변형 약어들과의 일..
-
리액트에서 EventEmitter를 이용한 이벤트 호출 _ Node.jsBack-end/Node.js 2023. 4. 13. 11:49
이번 주의 개인적으로 가장 큰 미션 중 하나는 필드가 연달아 3개가 있을 때, 두 번째 세 번째 필드가 첫 번째 필드의 상태를 보고 자동으로 바뀌는 것을 구현하는 것이었다. 좀 더 자세히는 초기 상태를 Select Field로 두고 Select Field 내용을 api 통신을 통해 받아오는데 이 때 받아올 내용이 없다면 첫 번째 필드를 TextField로 바꾸고, 두 번째, 세 번째 필드에서도 초기에 Select Field 였다가 첫 번째 Field가 TextField로 바뀐 것을 감지 한 후 TextField로 바꾸는 작업이다. 물론 각 필드를 하나씩 구현하면 쉽게 만들 수 있다. 하지만 각 필드는 사실 하나의 컴포넌트를 렌더링 한 것이다. 이를 위해서 Node.js에서 제공하는 eventEmitter..
-
웹 브라우저에 URL을 입력하면? (What happens when you enter a URL in a web browser?)Web 2023. 2. 11. 18:21
면접을 위한 많은 문제 은행 중 항상 빠지지 않고 나오는 질문이 있다. 바로 "주소창에 네이버(혹은 구글)를 검색하면 무슨 일이 일어나는지 아는대로 말씀해주세요" 이다. . . . 과연 무슨 일이 일어날까? 주니어 개발자의 얕은 지식을 공유한다. 1. 주소창에 입력하기 우선 브라우저를 켜고 URL 혹은 Domain name을 검색하게 될 것이다. URL은 "https://www.naver.com"을 말하고, Domain name은 "naver"를 말한다. 이를 통해, naver.com 도메인에 속해있는 www 컴퓨터의 인터넷망에서 통신을 하려면 당연히 기본적으로는 목적지(네이버 or 구글 등)의 IP주소를 알아야 한다. 그런데 이는 숫자로 이루어져 있어서 수 많은 주소들을 다 외울 수 가 없을 것이고, ..
-
프론트엔드 개발자의 맥북 셋팅 (neovim & tmux)Concern & Opinion 2023. 2. 9. 18:42
1. Dock file 정리 가장 먼저는 거슬리는 Dockfile들을 정리한다. 사실 나에게는 Finder, Download, Trash를 제외하고는 전부 소용이 없어서 다 지웠다. 2. Homebrew 설치 이것저것 설치할 것이 많으니 간단하게 설치할 수 있도록 Homebrew를 설치한다. 방법은 간단하다 "설치하기"의 curl url을 터미널에 붙혀넣으면 설치할 수 있다. 3. tmux 설치 나는 neovim을 사용하면서 tmux를 주로 사용한다. 터미널을 이용할 때 tmux가 얼마나 편한지 알고 있고, 한동안 터미널에서 작업해야하므로 tmux를 먼저 설치했다. homebrew를 설치했으므로 brew install tmux를 통해서 쉽게 설치 할 수 있다. 4. git 설치 앞으로 git을 통해 받을..
-
LocalStorage로 저장, 불러오기, 삭제 (JS, React)Front-end/React 2023. 2. 5. 21:45
특별히 서버단을 사용하지 않을 예정이고, 중요한 내용을 담고 있지 않다면 로컬스토리지를 이용하는 것도 좋은 방법 중 하나이다. 로컬 스토리지를 어떻게 이용하여 저장, 불러오기, 삭제를 할 수 있는지 알아보자. LocalStorage에 저장하기 localStorage.setItem('이름', JSON.stringify(..)) example for React) useEffect(() => { localStorage.setItem('my-data', JSON.stringify(data)) }) 위와 같이 하면 LocalStorage에 저장 할 수 있다. '이름' 이라고 적힌 부분은 LocalStorage에 저장하고 싶은 이름을 적으면 되고, 저장하고 싶은 데이터는 JSON.stringify를 통해서 저장 하..