[TIL #5] 소수 만들기
·
Camp/T.I.L.
숫자를 담은 배열이 주어지고,그 배열에서 3개를 뽑아 소수를 몇 개나 만들 수 있는지 확인하는 문제다. 소수는 약수가 자기 자신과 1 뿐인 수를 말한다.번거로운 계산 과정 없이 바로 판단할 수 있는 건 다음과 같다.1 이하인 수2, 3, 5, 7, ....하지만 숫자가 매우 크다면?한눈에 판단하기 매우 어려울 것이다.이를 판별하기 위한 여러 가지 방법이 있다. 1. 소수1. 에라토스테네스의 체소수 판별을 위한 가장 심플한 방법으로 에라토스테네스의 체가 있다. 에라토스테네스의 체 - 위키백과, 우리 모두의 백과사전위키백과, 우리 모두의 백과사전. 에라토스테네스의 체 수학에서 에라토스테네스의 체는 소수를 찾는 빠르고 쉬운 방법이다. 고대 그리스 수학자 에라토스테네스가 발견하였다. 2부터 소수를ko.wikip..
[TIL #4] 비동기
·
Camp/T.I.L.
1. 정의일반적으로 코드는 순차적으로 실행되며, 완료가 되어야 다음으로 넘어간다.차례대로 하나하나씩 실행하는 것을 동기라고 이해할 수 있다. 그렇다면 비동기는?비동기란 말 그대로 동기가 아니라는 의미.어떤 작업의 완료를 기다리지 않고 다음 작업으로 진행하는 것을 말한다.따라서 여러 작업을 병렬로 수행시킬 수도 있다.병렬로 처리한다는 부분에서 슈퍼스칼라 아키텍처와 유사한 점이 있다. 다음의 이미지를 참고할 수 있겠다.  2. PromiseJS에서의 비동기 처리를 위해 ``Promise``는 꼭 알아야 하는 개념이다.``Promise``는 JS에서 비동기 작업을 처리하기 위한 객체로,비동기 작업의 성공(``resolved``) 또는 실패(``rejected``)를 처리할 수 있는 방법을 제공한다.``Prom..
[TIL #3] this, call(), apply(), bind()
·
Camp/T.I.L.
어쩌면 C를 처음 배울 때 포인터에서 느끼는 벽 이상의 무언가를 느끼게 해주는 존재.``this``는 포인터는 아니지만 어떤 함수의 컨텍스트를 참조한다는 점에서 유사하기도 하다. 1. this``this``는 다음과 같은 특징을 가진다.실행 컨텍스트 - ``this``는 함수가 호출될 때 그 함수의 실행 컨텍스트에 따라 값이 결정된다.이 실행 컨텍스트는 함수가 어떻게 호출되었느냐에 따라 달라진다.예를 들어, 객체의 메서드로 호출되면 그 객체가 ``this``가 되고,단순히 함수로 호출되면 전역 객체(``window`` 또는 ``global``)가 ``this``가 된다.동적 바인딩- ``this``는 런타임에 결정되는 동적 바인딩을 사용한다.``this``가 가리키는 대상은 함수가 호출될 때마다 달라질 ..
[KPT 회고] 팀 소개 페이지 미니 프로젝트에 대한 회고
·
Camp/T.I.L.
본 캠프의 시작을 알린 팀 소개 페이지 프로젝트.프로젝트를 돌아보는 시간을 가졌다. KPT란 ``Keep``, ``Problem``, ``Try``의 약자로,프로젝트에서 계속 유지하고 싶은 점(``Keep``)프로젝트에서 문제가 되는 점(``Problem``)차기에 개선을 위한 시도할 수 있는 점(``Try``)을 말한다.팀원들과 이에 대해 생각하며 현재 상태를 확인하고,개선을 위해 고민하는 중요한 과정이라고 할 수 있다.  이번에 우리가 진행하며 회고한 내용은 다음과 같다.1. Keep잘 모르는 부분이라도 적극적으로 찾아보며 해결하려는 노력은 좋았다. - 주어진 과제를 해결하려는 의지를 나타낸다는 것은 대단히 좋은 일.혼자 다 해결하려고 하지 않고, 다른 팀원의 성장을 위해 일을 분담한 것이 좋았다. ..
[TIL #2] 간단한 API 프록시 서버 구현
·
Camp/T.I.L.
원래 로컬 환경에서 다 하고 싶었지만,CORS 문제에 직면했다. CORS란 무엇인가? CORS란 무엇인가?CORS가 무엇인지 알기 전에, 이 CORS가 등장하게 된 배경을 먼저 알아보자.SOP는 2011년 RFC 6454에서 등장한 보안 정책으로 "같은 출처에서만 리소스를 공유할 수 있다"라는 규칙을 가진 정책이다.그러velog.io  로컬에서 서버를 굴리려고 해도 SSL 문제에서 자유롭지 않았다.결국 마지막으로 택한 방법은 외부 호스팅에 프록시 서버 올리기. 내가 선택한 서비스는 Railway RailwayRailway is an infrastructure platform where you can provision infrastructure, develop with that infrastructure ..
[TIL #1] 명세
·
Camp/T.I.L.
다시 1로 돌아간 이유는 본캠프의 시작이라서. 명세란 "물품이나 금액 따위의 분명하고 자세한 내용"이다.API 명세란 API의 분명하고 자세한 내용이 되겠다.이는 아래와 같다. 네이버 API에 대해 설명하는 페이지다.요청 URL은 뭐고 프로토콜은 뭐고 요청 방식은 뭐고...이런 것들을 나열해 설명한 것이 API 명세. 기획 80%, 개발 20%라는 말도 있다더라.그만큼 기획이 중요하다는 의미기도 하다. 그간 난 여러 사람과 같이 프로젝트를 할 일이 잘 없었다.있더라도 규모가 작아 서류가 없어도 원만히 잘 진행됐다. 하지만 이젠 다르다.협업을 배우는 현장에 있다.명세의 중요성을 머리에 새겨야만 하겠다.
[TIL #20] 3진법 뒤집기
·
Camp/T.I.L.
자연수 $n$이 주어질 때,$n$을 삼진법으로 변환 후 순서를 뒤집고 다시 십진수로 바꾸는 문제. 삼진수를 문자열로 표현하여 처리하면 되지 않을까 했다. #include using namespace std;string toTernary(int n) { if (n == 0) return "0"; string ternary = ""; while (n > 0) { ternary = to_string(n % 3) + ternary; n /= 3; } return ternary;}int toDecimal(const string& ternary) { int decimal = 0; int power = 1; for (int i = ternary.le..
[TIL #19] 사각형 별 찍기
·
Camp/T.I.L.
프로그래밍을 처음 배울 때 한번씩은 해 보는 별 찍기.사각형으로 한번 찍어보고 삼각형으로 넘어갔던 것 같다. 그땐 마침 반복문을 배운 때였으니 별 찍기로 향하는 것은 당연했으리라.코드를 이렇게 작성했었다.#include int main() { int width = 10; // 직사각형의 가로 길이 int height = 5; // 직사각형의 세로 길이 // 세로 길이만큼 반복 for (int i = 0; i 반복문을 활용한 정석적인 직사각형 별 찍기다. 지금 생각해 보니 이거보다 더 효율적인 방법이 있었다.가로길이만큼의 문자열을 담은 변수를 선언하고 그걸 세로길이만큼 반복하면 된다.#include #include using namespace std;int main(void) { ..
[TIL #18] 약수의 개수와 덧셈
·
Camp/T.I.L.
두 정수 $n$과 $m$이 주어진다.둘 사이의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고,개수가 홀수인 수는 뺀 수를 리턴해야 한다. 약수문제? 반복문으로 브루트 포스 하듯이 할 수도 있지만...이미 수의 성질을 활용해 여러 문제를 해결하지 않았는가.여기서도 활용할 수 있다. 어떤 자연수 $n$의 약수의 개수가 짝수인지 여부를 확인하려면,해당 자연수가 완전 제곱수인지 확인하면 된다. 자연수의 약수는 짝을 이루어 나타난다.$n = 12$의 경우, 약수는 $1, 2, 3, 4, 6, 12$이고, 짝을 이루는 것을 확인할 수 있다.하지만 완전 제곱수일 경우, 예를 들어 $n = 16$일 때 약수는 $1, 2, 4, 8, 16$이다.4가 2번 등장하게 되므로 하나의 수로 취급하게 되어 약수의 개수가 ..
[TIL #17] 가운데 글자 가져오기
·
Camp/T.I.L.
임의의 문자열 $S$가 있을 때, 문자열의 가운데에 있는 글자를 반환해야 한다.문자열의 길이가 짝수일 경우 중간의 2글자를 반환한다. 난 1차로 아래와 같이 답을 냈다.#include #include #include using namespace std;string wstringToString(const std::wstring& wstr) { wstring_convert, wchar_t> converter; return converter.to_bytes(wstr);}string solution(int n) { wstring base = L"수박"; wstring answer; for (int i = 0; i 흠...유니코드 장난질 때문에 이렇게 까지 해야 한다고?라는 생각..