코딩 테스트의 핵심, 시간 복잡도 이해하기
·
코딩테스트
코딩 테스트는 결국 정확함과 효율성의 싸움이다. 정답을 맞히는 것도 중요하지만, 문제의 시간 복잡도를 고려하고 그에 맞는 알고리즘을 선택해 효율적인 코드를 작성해야한다.시간 복잡도란?시간 복잡도는 문제를 해결하기 위해 필요한 연산 횟수를 수학적으로 표현한 것이다.즉, 코드가 얼마나 많은 계산을 수행하는지를 나타내는 지표다.코딩 테스트에서는 보통 다음 기준으로 계산한다.💡 1초 ≈ 1억 번(=10⁸)의 연산따라서 문제의 제한 시간이 1초일 때, 연산 횟수가 10⁸번을 넘어가면 시간 초과가 발생할 가능성이 높다.예시로 살펴보기입력 크기 n = 10⁵인 문제에서알고리즘의 시간 복잡도가 O(n²)라면 약 10¹⁰번의 연산이 필요하다.→ 1초 안에 끝나지 않는다. 하지만 O(n log n) 알고리즘이라면 약 1..
Base64란?
·
카테고리 없음
URL, API 응답, JWT 토큰 내부 등 여러 곳에서 Base64라는 표현을 자주 볼 수 있다. 하지만 단순히 "인코딩 방식" 정도로만 알고 지나치는 경우가 많은 것 같다. 이 글에서는 Base64가 무엇인지, 왜 사용되는지, 그리고 어떻게 쓰이는지까지 정리해보려 한다.Base64란?Base64는 이진(binary) 데이터를 텍스트(text) 형태로 안전하게 변환하는 인코딩(encoding) 방식이다. 컴퓨터 안에서 모든 데이터는 0과 1로 이루어진 이진 형태로 저장되지만, 이를 그대로 전송하면 문제가 발생할 수 있는 환경(예: 이메일, 일부 네트워크 프로토콜 등)에서는 텍스트 데이터만 허용되는 경우가 있다.이때 Base64를 사용하면 이진 데이터를 A~Z, a~z, 0~9, +, / 총 64개의 문..
[JavaScript] NaN, isNaN(), Number.isNan()
·
카테고리 없음
이번 프로젝트는 통합테스트를 1~4차로 나눠 진행하는데, 아직 1차 테스트 기간이라 꽤나 여유로운 나날들을 보내고 있다. 물론 몇주 뒤의 나는 이 생각을 철회하겠지만......🤐어제 개선사항으로 화면 소스를 수정할 일이 생겼고 isNaN 함수를 사용하게 되었다. NaN이 뭔지 알긴 아니까 쓴건데 기억이 가물가물해서 궁금해졌다. 그래서 NaN이 뭔데?NaN은 "Not a Number"의 약자로 숫자가 아닌 값을 나타내는 오류값이다.JavaScript에서는 숫자 파싱을 실패했을 경우나 계산 결과를 실수로 나타낼 수 없을 때 NaN이 반환된다.NaN과 그 특징은 JavaScript에서 발명한 것은 아니며, 컴퓨터상의 부동소수점 표준인 IEEE 754에 명시되어 있다. (이 어색한 번역투는 뭐람... 영어공부..
[네트워크] 동기(Synchronous) vs 비동기(Asynchronous)
·
카테고리 없음
웹서비스를 개발하거나, 서버와 서버가 데이터를 주고받는 시스템을 설계할 때 고민하는 것 중 하나가 “이 작업을 동기로 할까, 비동기로 할까” 이다. 두 방식 모두 데이터를 주고받는 것은 같지만, 처리 방식이 다르다.1. 동기 통신이란?동기(synchronous) 통신은 한쪽이 요청(request)을 보내면 상대측에서 응답(response)을 돌려줄 때까지 기다리는 방식이다. 요청자가 결과를 받아야만 다음 단계로 넘어갈 수 있기 때문에, 요청과 응답의 순서가 보장된다.예를 들어, https://example.com/user/123 호출해서 사용자의 정보를 가져온다고 하자. 클라이언트는 서버에 요청을 보내고, 서버가 JSON 데이터를 응답으로 보내줄 때까지 그 요청의 결과를 기다린다. 이런 경우에는 요청-응..
네트워크 첫걸음 - 랜과 왠
·
카테고리 없음
1. 랜과 왠의 차이네트워크는 접속할 수 있는 범위에 따라 크게 두 가지 종류로 나눌 수 있다.- 랜(LAN) : 건물 안이나 특정 지역을 범위로 하는 네트워크(Local Area Network 근거리 통신망)- 왠(WAN) : 지리적으로 넓은 범위에 구축된 네트워크(Wide Area Network 광역 통신망). 인터넷 서비스 제공자(ISP)가 제공하는 서비스를 사용하여 구축된 네트워크. 랜과 랜을 연결한다.- 인터넷 서비스 제공자(Internet Service Provider, ISP) : 인터넷 상용 서비스 사업을 하고 있는 KT, U+, SK브로드밴드와 같은 사업자를 말한다.- 랜은 연결하는 거리가 짧은 만큼 신호가 약해지거나 오류가 발생할 확률도 매우 낮다. 반면에 왠은 멀리 떨어져 있는 랜과 ..
네트워크 첫걸음 - 정보의 양을 나타내는 단위
·
카테고리 없음
1. 비트와 바이트- 디지털 데이터(digital data) : 모든 컴퓨터는 숫자 0과 1만을 다루는데, 그 0과 1의 집합을 디지털 데이터라고 한다.- 비트(bit) : 0과 1의 정보를 나타내는 최소 단위- 바이트(byte) : 1비트는 0 또는 1인 숫자 여덟 개를 모아 표시할 수 있다. 이 단위를 바이트라고 부른다. 그래서 8비트는 1바이트가 된다.- 컴퓨터는 기본적으로 바이트 단위로 데이터를 읽고 쓰는 작업을 한다. 그래서 디지털 데이터를 만들 때는 8비트를 1바이트로 다루는 것이 좋다.- 컴퓨터는 모든 것을 0과 1의 집합으로만 다루는데, 어떻게 키보드로 문자를 입력할 수 있을까? : 숫자와 문자의 대응표를 미리 만들어두었기 때문에 가능하다. 이 숫자는 A로 표시하고 저 숫자는 B로 표시한..
네트워크 첫걸음 - 네트워크의 구조
·
카테고리 없음
1. 컴퓨터 네트워크- (컴퓨터) 네트워크 : 두 대 이상의 컴퓨터가 연결되어 있고, 컴퓨터 간에 필요한 데이터를 서로 주고받을 수 있다.- 네트워크를 사용하여 컴퓨터 간의 데이터(파일) 전송, 웹 사이트 열람, 메일 송수신 같은 것을 할 수 있다.- 인터넷 : 전 세계의 큰 네트워크부터 작은 네트워크까지를 연결하는 거대한 네트워크- 전 세계가 네트워크로 연결되어 있기 때문에 인터넷으로 해외 웹 사이트도 볼 수 있다. 2. 패킷- 네트워크나 인터넷에서 데이터를 주고받으려면 규칙이 있어야한다. 그 규칙에는 패킷(packet)을 사용한다.- 패킷 : 컴퓨터 간에 데이터를 주고받을 때 네트워크를 통해 전송되는 데이터의 작은 조각을 말한다. 큰 데이터가 있더라도 작게 나누어서 보내는 게 규칙이다.- 패킷 = 택..
[Linux] 리눅스 최초 설치 시 netstat, ifconfig 설치방법
·
카테고리 없음
1. CentOSsudo yum install net-tools
꿀쥐
기록