소개
- 現 어비스 대표 및 리드개발자
- 前 네이버 개발자
- 4년차 알고리즘 강사(네이버 / 카카오 / 라인 / 삼성 코딩테스트합격자 배출)
- 19, 20 IT 대기업 코딩테스트 합격자(All Solved)
- 자바스크립트 테스트 프레임워크 Mocha.js contributor
- 저서 《 면접을 위한 CS전공지식노트 》 2022 / 국내IT도서 1위 베스트 셀러
- 저서 《 실시간 모니터링 시스템을 만들면서 정복하는 MEVN 》 2021 / 국내IT도서 63위 베스트셀러
강의
전체2수강평
게시글
질문&답변
2024.04.29
로또번호 7개 셔플 자료구조 설명에서 설명에 대한 질문
안녕하세요 ㅎㅎ 네 수강생님 말씀이 맞습니다 ㅠㅠ 탐색이 아니라 참조인데... 죄송합니다. 수정된 부분은 다음과 같습니다. 로직 로또번호 7개 셔플에 필요한 로직은 딱 두가지 참조와 swap입니다. 7개의 수 중 자유롭게 랜덤적으로 2개의 수를 참조하고 그 2개의 수를 swap하는 로직이 필요합니다. 플로우 즉 이는 다음과 같은 플로우를 기반으로 배열이란 자료구조를 사용해야 한다는 답을 갖게 됩니다. 삽입이나 삭제가 필요하지 않습니다. 로또번호는 순차적으로 구성되어있기 때문에 이에 관한 자료구조는 배열, 연결리스트가 있습니다. 스택과 큐를 생각할 수 있지만 자유로이 랜덤적으로 2개를 참조해 swap을 해야하고 이 때문에 랜덤접근이 불가능한 자료구조는 배제하게 됩니다. 이중에서 참조(random access)에 O(1)인 배열 을 사용하는 것이 좋습니다. 이부분은 제가 이번주내로 수정하여 수정업로드를 하도록 하겠습니다. 제 틀린 부분을 지적해주셔서 정말 감사를 드립니다. 강사 큰돌 올림.
- 0
- 1
- 15
질문&답변
2024.04.29
HTTPS프로토콜에 대해서 질문이 있습니다
안녕하세요 상진님 ㅎㅎ 응용계층과 세션계층을 아우르는 개념으로 이해하면 되는건지가 애매합니다. >> HTTPS는 HTTP와 TLS(TLS 이전의 SSL 포함)의 조합으로 이루어진 프로토콜입니다. OSI 7계층 모델에서는 보통 프로토콜의 기능에 따라 분류를 하게 되는데, HTTPS는 HTTP 프로토콜의 응용 계층 특성을 그대로 유지하면서 TLS의 암호화 및 보안 기능을 추가한 것이기 때문에 보통은 응용 계층의 프로토콜로 분류됩니다. 하지만 절대적이지는 않습니다. 보안 관점에서 본다면 HTTPS는 암호화와 인증 기능을 제공하는 것으로 볼 때 세션 계층에 속한다고 볼 수도 있습니다. 즉, 보통은 HTTPS는 응용 계층의 프로토콜로 분류되지만, 상황에 따라 세션계층으로 분류될 수 있습니다. TLS는 Optional로 표기되어 있어서 >> HTTP/2는 TLS를 선택적으로 쓸 수 있습니다. 즉, TLS가 없는 HTTP/2도 있습니다. 하지만 보통의 경우 HTTP/2라고 했을 때 HTTPS위에서 돌아가는 HTTP/2라고 암묵적으로 생각합니다. 참고로 상진님이 말씀하신 부분은 사실 h2c라는 이름으로 알려져있습니다. h2c는 TLS를 사용하지 않고 TCP 연결 위에서 직접 HTTP/2를 사용하는 것을 의미합니다. h2는 tls가 장착된 http2를 부릅니다. https://httpd.apache.org/docs/2.4/howto/http2.html 왜냐하면 브라우저에서는 HTTPS가 없는 HTTP2는 지원하지 않습니다. 거의 모든 최신 브라우저는 HTTP/2를 지원하지만 SSL 연결을 통해서만 지원합니다: Firefox(v43), Chrome(v45), Safari(v9 이후), iOS Safari(v9), Opera(v35), Android용 Chrome(v49) 오픈소스 중에 물론 HTTPS가 없는 HTTP2를 지원하는 클라이언트도 있지만 보통은 h2를 지원하고 >> h2c를 곁다리로 지원하는 형식으로 갑니다. go 의 http2 https://pkg.go.dev/golang.org/x/net/http2 akka-http( h2c를 지원하지 않음) https://github.com/akka/akka-http/issues/1849 h2c의 장점 개발 환경에서의 디버깅이나 로컬 테스트를 위해 암호화된 연결을 설정할 필요가 없으므로 개발자들이 편리하게 테스트를 할 수 있다는 장점, 암호화와 관련된 오버헤드가 없다는 장점은 있습니다. 제 설명자체도 브라우저 기반으로 설명하는 부분에서 말씀드렸기 때문에 HTTPS 위에서만 돌아갑니다 라고 표현한 부분은 맞긴 하지만... 사실 엄밀히 말하면 혼란을 줄 수 있다고 생각합니다. 해서 다음과 같이 수정하도록 하겠습니다. HTTP/2는 보통 HTTPS 위에서만 돌아갑니다. (TLS계층을 선택적으로 쓸 수 있지만 보통은 HTTP/2를 쓸 때 TLS계층을 둡니다.) 이게 더 맞는 표현인 것 같습니다. 해당 부분은 오늘내로 수정해서 반영하도록 하겠습니다. 혼란을 드려 죄송합니다. ㅠ 또 질문 있으시면 언제든지 질문 부탁드립니다. 좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :) 감사합니다. 강사 큰돌 올림.
- 0
- 1
- 58
질문&답변
2024.04.29
7-A dp초기화값 관련 시간초과 질문
안녕하세요 ㅎㅎ 좋은 의견입니다. 여기서 -1 : 방문하지 않은 정점을 의미하고 987654321은 방문을 했을 때의 초기값이라고 생각하시면 됩니다. dp[here][visited] = 987654321; //모든도시를 돌며, 방문안한곳으로 들어감! //i번째 도시로 갈 예정임. for (int i = 0; i 이러한 로직에서 for문이 작동이 안되면 dp 는 해당 초기값을 반환해야 하지만 + 방문했음 을 알려줘야 하거든요. 그렇기 때문에 서로 다르게 해야 합니다. 또한... -1이 아니고 다른 수로 해도 괜찮습니다. #include typedef long long ll; using namespace std; int n, w[16][16],dp[16][1 > n; for (int i = 0; i > w[i][j]; } } //memset(dp, -1, sizeof(dp)); fill(&dp[0][0], &dp[0][0] + 16 * (1 이런식으로 문제 범위를 벗어나는 1e9로 해도 상관없습니다. 또 질문 있으시면 언제든지 질문 부탁드립니다. 좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :) 감사합니다. 강사 큰돌 올림.
- 0
- 2
- 38
질문&답변
2024.04.29
1-m 3986 좋은단어 질문
안녕하세요 ㅎㅎ 매케이스마다 새롭게 stack을 정의해주시는 부분이 없어서 그렇습니다. ㅎㅎ 이렇게 해보시겠어요? 그리고 size == 0보다는 empty가 더 좋습니다. #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n, cnt = 0; cin >> n; for (int i = 0; i > s; stack _stack; for (char c : s) { if (_stack.empty() || _stack.top() != c) { _stack.push(c); } else { _stack.pop(); } } if (_stack.empty()) { cnt++; } } cout 또 질문 있으시면 언제든지 질문 부탁드립니다. 좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :) 감사합니다. 강사 큰돌 올림.
- 0
- 1
- 22
질문&답변
2024.04.29
1 - K 질문입니다!
안녕하세요 kkim님 ㅎㅎ odd가 없을 때를 고려 + 기본 타입을 바꾸시면 됩니다. 이렇게 한번 해보시겠어요? #include #include using namespace std; string s, ret, inst; map mp; int main() { ios_base::sync_with_stdio(false); char odd = 0; // char로 변경 cin >> s; for (char c : s) { mp[c]++; } for (auto i : mp) { if (i.second % 2 == 0) { for (int j = 0; j 또 질문 있으시면 언제든지 질문 부탁드립니다. 좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :) 감사합니다. 강사 큰돌 올림.
- 0
- 2
- 38