분류 전체보기

JavaScript에서 Number의 큰 수 처리 한계, BigInt로 해결

백준 홀수일까 짝수일까(5988번) 라는 문제를 푸는데… 계속 ‘틀렸습니다’가 뜨는것이다. 이는 간단히 홀짝만 판단하면 되는 문제였다.분명히 올바르게 짠 코드 같은데, 대체 뭐가 문제였을까?먼저 문제를 간단히 설명하자면 다음과 같다. 문제 설명요약N개의 정수가 주어질 때, 각각 홀수인지 짝수인지를 출력하는 프로그램을 작성하는 것이다. 입력첫 번째 줄: 숫자의 개수 N(1 두 번째 줄부터 N+1번째 줄: 정수 K (1 2 1024 593출력N개의 줄에 걸쳐 한 줄씩 정수 K가 홀수라면 'odd'를, 짝수라면 'even'을 출력.even odd 내가 처음에 작성한 코드아래는 처음 작성한 코드다. 문제 조건에 맞춰 홀짝 여부를 판단했다.let input = require("fs").readFileSync("/..

JavaScript 2024.11.28

for문 내에 변수를 선언해도 괜찮을까?

도입JavaScript에서 변수를 선언할 때 종종 마주치는 고민이 있다.'for문 내부에 변수를 선언해도 될까? 아니면 for문 밖에서 선언하는 것이 더 좋을까?' 이런 고민이 생긴 이유는 let과 const는 var과 달리 재선언이 불가능하기 때문이다.또한 'for문 내부에서 변수를 선언하면 반복이 될 때마다 선언되니 메모리적으로 비효율적이지 않을까? 혹시 문제가 발생하지 않을까?'라는 생각도 들었다(아래 코드의 2번 방식). 하지만 실제로 사용해보면 아무런 문제가 발생하지 않는다. 그래서 그냥 넘어갔던 문제인데, 이러한 고민이 들 때마다 찝찝한 마음이 들어서 이번 기회에 확실히 정리하고자 한다. // 1. for 문 밖에서 변수를 미리 선언하고 재할당하는 방식let ny, nx;for (let i =..

JavaScript 2024.11.24

SSE(Server Sent Events)로 간단한 실시간 알림 기능을 만들어보자(React, node.js)

도입프로젝트를 진행하는데, 실시간으로 알림을 받을 수 있는 기능을 구현해야 했다.즉, 클라이언트에서는 따로 요청 없이 서버로부터 알림 데이터를 실시간으로 받고, 나는 응답 받은 알림 데이터를 화면에 보이도록 구현해야 했다. (쉽게 말하면 알림 수신함을 구현해야 했다.)이 방식은 SSE를 활용하면 쉽게 구현할 수 있다. 이 글에서는 SSE에 대한 개념을 설명한 뒤, 아래 예시와 같은 간단한 예제 코드를 작성해보는 시간을 가질 것이다.React와 Node.js(express)로 구현하였으며, 각 문법을 몰라도 최대한 이해할 수 있도록 작성했다. 또한 Web API로 구현을 진행하므로 다른 라이브러리는 설치할 필요가 없다. SSE(Server Sent Events)란?일반적으로 클라이언트가 서버에게 요청을 보..

글또 10기 시작, 그리고 함께 안고 갈 목표

이전 기수의 나의 모습을 되돌아보고, 이번 글또 10기에서는 어떤 목표를 가지고 임할지, 그리고 글또 활동과 별개로 어떤 목표를 안고 갈지 정리하고자 한다. 글또 10기에 지원한 이유글또 8기를 시작으로 어느덧 10기까지 참여하게 되었다. 대학 2학년 겨울방학 때 처음 시작한 이 활동이 이제 4학년이 끝나가는 시점까지 이어지면서, 어쩌다 내 대학 시절의 절반이 글또와 함께하게 됐다. 이전 기수들을 돌아보면, 매번 당찬 포부와 목표를 세웠지만, 이를 완전히 이루지 못한 아쉬움이 남아있다. 하지만 글또에 참여하기 전에는 ‘나는 글을 잘 못 쓰는 사람이다’ 라고 스스로를 한정 지었는데, 지금은 글 쓰는 것에 대해 비교적 자신감이 붙었고, 글쓰기가 나름 즐거워졌다. 또한, 나도 좋은 글을 쓰고 싶다는 열망이 점..

회고 & 생각 2024.10.13

데이터 타입은 왜 필요한가? 동적 타입 언어의 특징도 알아보자

데이터 타입의 필요성1. 데이터 타입에 의한 메모리 공간의 확보와 참조값은 메모리에 저장하고 참조할 수 있어야 한다. 메모리에 값을 저장하려면 먼저 확보해야 할 메모리 공간의 크기(메모리 셀의 개수(byte 수))를 알고 결정해야 한다. js엔진은 데이터 타입(값의 종류)에 따라 정해진 크기의 메모리 공간을 확보한다 확보되는 메모리 공간의 크기는 js 엔진 제조사에 의해 다를 수 있다. ECMAScript에는 숫자 타입은 배정밀도 64bit(8byte) 부동소수점 형식을 사용하다고 명시되어 있다.var score = 100;위 예제에서 js 엔진은 리터럴 100을 숫자 타입의 값으로 해석하고 이를 저장하기 위해 8byte의 메모리 공간을 확보한 뒤 2진수로 저장한다.💡 심벌 테이블컴파일러 또는 인터프리..

JavaScript 2024.08.02

JavaScript 원시 타입 종류 7가지

데이터 타입데이터 타입은 값의 종류를 말한다. javascript에서 원시 타입은 7개이며, 그 외에는 모두 객체 타입이다. javascript는 객체 기반 언어이므로 거의 모든 것이 객체로 이루어져 있다. 이번 장에서는 원시 타입에 대해 다루고, 객체 타입은 추후 다루고자 한다. js 엔진은 타입을 구별해서 값을 취급한다. 따라서 값이 같더라도 타입에 따라 해석하는 방식이 다르다.ex) 0100 0001 - 숫자로 해석하면 65, 문자로 해석하면 ‘A’ 원시 타입 1 - 숫자 타입(number)C나 java의 경우, 정수와 실수를 구분해서 int, long, float 등 다양한 숫자 타입을 제공한다. 하지만 javascript에서 숫자는 실수 타입만 존재한다. 정수로 표기해도 사실은 실수다.// 숫자..

JavaScript 2024.08.02

변수는 왜 필요한가?, 어떻게 선언되고 할당되는지도 알아보자 (feat. 메모리)

메모리변수에 대해 알기 전, 먼저 메모리에 대해 간단히 짚고 넘어가겠다.컴퓨터는 CPU를 사용해 연산하고, 메모리를 사용해 데이터를 기억한다. 메모리는 데이터를 저장할 수 있는 메모리 셀의 집합체다. 메모리 셀 하나는 1Byte이며, 컴퓨터는 메모리 셀 단위로 데이터를 저장하거나 읽어들인다. 각 셀은 고유의 메모리 주소를 갖는다.컴퓨터는 모든 데이터를 2진수로 처리한다(위 그림은 편의상 10진수로 표기했다). 숫자 값 10, 20은 임의의 메모리 주소에 저장되고 CPU는 이 값을 읽어 들여 연산을 수행한다. 연산 결과인 30도 메모리의 임의의 주소에 저장된다. 자, 이제 연산이 끝났고 나는 연산 결과인 숫자 30을 이용해 어떠한 작업을 하고 싶다.하지만, 연산 결과가 메모리에 저장되었지만 재사용을 할 수..

JavaScript 2024.07.31

컴퓨터 네트워크 - 네트워크란?, 패킷, LAN, WAN

이번 글에서는 컴퓨터 네트워크가 무엇인지 알고, 패킷, 네트워크의 종류인 LAN과 WAN에 대해 알아보고자 한다. 컴퓨터 네트워크란? 컴퓨터 네트워크에 대해 말하기 전, 일단 네트워크가 무엇인지 짚고 가겠다. 네트워크는 두 개 이상의 무언가가 연결되어 정보를 주고 받는 구조를 뜻한다. 일상생활로 예를 들어보자면, 소셜 네트워크 서비스(SNS)가 있다. 이는 온라인 상에서 사람과 사람간에서 정보를 공유하는 구조다. 그 외에도 도로와 철도의 네트워크, 물류 네트워크 등과 같이 다양한 네트워크가 있다. 그럼 이제 컴퓨터 네트워크가 무엇인지 예측할 수 있을 것이다. 두 대 이상의 컴퓨터 간에 정보(데이터)를 공유하는 것, 이것이 컴퓨터 네트워크다. 이제부터 컴퓨터 네트워크를 간단하게 네트워크라고 칭하겠다. 네트..

CS/Network 2024.03.30