소개
- 現 어비스 대표 및 리드개발자
- 前 네이버 개발자
- 4년차 알고리즘 강사(네이버 / 카카오 / 라인 / 삼성 코딩테스트합격자 배출)
- 19, 20 IT 대기업 코딩테스트 합격자(All Solved)
- 자바스크립트 테스트 프레임워크 Mocha.js contributor
- 저서 《 면접을 위한 CS전공지식노트 》 2022 / 국내IT도서 1위 베스트 셀러
- 저서 《 실시간 모니터링 시스템을 만들면서 정복하는 MEVN 》 2021 / 국내IT도서 63위 베스트셀러
강의
전체2수강평
- 이해하기 쉽고 재밌게 잘가르치시는것 같습니다
양준호
2024.04.10
1
- 학부시절 들었던 내용을 정리하게 도와주셔서 감사합니다.
kitt_92
2024.04.09
1
- 굿!!!!!!
김표성
2024.04.08
1
게시글
질문&답변
2024.04.20
1-A break 질문
안녕하세요 ㅎㅎ j 순회 -> break; 하면 j 순회부분만 빠져나오게 됩니다. i로 순회하고 있는 밖까지 빠져나오지는 않습니다. 예를 들어 볼까요? #include using namespace std; int arr[50], sum, a, b; vector v; int main() { for (int i = 0; i 다음의 코드처럼 i를 순회하는 것은 빠져나오지 않습니다. 또 질문 있으시면 언제든지 질문 부탁드립니다. 좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :) 감사합니다. 강사 큰돌 올림.
- 0
- 1
- 22
질문&답변
2024.04.19
6-G 질문드립니다!!
안녕하세요 ddragon님 ㅎㅎ #include using namespace std; typedef long long ll; ll x, y, z, lo, hi, ret = -1; bool check(ll mid) { ll change_z = (y + mid) * 100 / (x + mid); return change_z > z; } int main() { cin >> x >> y; z = y * 100 / x; lo = 1; hi = 1e9; while(lo 이렇게 바꿔보시겠어요? z = (double)y / x * 100; 이부분에서 실수가 있으셨구 + 타입변환 부분만 좀 바꿔봤습니다. ㅎㅎ 나머지 부분은 잘 짜셨습니다 ㅎ 실수가 아니라 정수 나눗셈을 사용했는데요. (실수연산은 정확하지 않으니 최대한 사용하지 않는게 좋습니다. + 문제 범위자체가 1,000,000,000 등 매우 큰 수이므로 long long을 사용해야 합니다. ) 이는 * 100을 이미 했기 때문에 이를 통해 백분율이 계산되어 문제의 게임 승률이 표시되는 방식(소수 부분을 잘라냄)을 구현했습니다. Z는 형택이의 승률이고, 소수점은 버린다. 예를 들어, X=53, Y=47이라면, Z=88이다. 또 질문 있으시면 언제든지 질문 부탁드립니다. 좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :) 감사합니다. 강사 큰돌 올림.
- 0
- 1
- 26
질문&답변
2024.04.19
7-S 시간초과 질문드립니다 !!
안녕하세요 윽쓰님 ㅎㅎ for(int i =0 ; i 일단은... 이부분에서 시간초과가 발생하는 것 같습니다. - 재귀함수 호출 뭔 의미인지는 알겠습니다만 i, j 가 모든 쌍에서 시작함 - 저게 시작과 끝 부분을 의미하고... 그렇게 되면 1, 4 -> 2, 3 으로 이어지게 되겠죠? 근데 이경우 2, 3이 펠린드롬 -> 1, 4인 경우를 체크하는 효율적인 로직이 이어지지 않습니다. (즉, 비효율적) 그러면서 매번 쌍 자체가 펠린드롬인지를 확인하느라 시간이 많이 걸릴 것 같습니다. - 메모이제이션을 걸어도 -> 불필요한 함수호출은 발동. 제 생각에는 이런 코드를 원하신게 아닐까요? 해당 부분을 고쳤고 + go2()부분은 반복적 DP로 바꿔서 풀어봤습니다. #include using namespace std; string S; bool DP[2505][2505]; int DP2[2505]; // 최소 분할 횟수 #define INF 987654321 void fill_palindrome_dp() { int n = S.size(); for (int i = 0; i > S; fill_palindrome_dp(); fill(DP2, DP2 + 2505, INF); DP2[0] = 0; int n = S.size(); for (int here = 0; here 한번 이렇게 해보시겠어요? 중요한 주석 부분도 달아놓았습니다. 아 그리구 윽쓰님 ㅎㅎ 별점 5점 감사드립니다. ㅎㅎ 또 질문 있으시면 언제든지 질문 부탁드립니다. 좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :) 감사합니다. 강사 큰돌 올림.
- 0
- 1
- 38
질문&답변
2024.04.19
makePermutation 질문합니다
안녕하세요 ㅎㅎ r 값이 nPr 에서의 r , 즉 n개 중에 순서와 관계있이 r개를 뽑는다는 의미입니다. 여기서 함수에서 r 과 depth 가 같아지는 순간은 선택을 완료했음을 의미하며, 이 시점에서 재귀호출을 중단하고 결과를 출력하거나 다른 로직을 해야 합니다. 함수 내부에서 depth 와 r 이 같아지는 경우는 재귀 호출의 기저 조건으로 설정되어, 모든 선택이 완료된 상태임을 나타냅니다. 함수를 계속 호출하다 r과 depth 가 같아지고 -> 찾으려했던 경우의 수 -> 기저사례 발동 이 되는 것이죠. 감사합니다.
- 0
- 2
- 17
질문&답변
2024.04.19
3-D 메모리초과 질문있습니다
안녕하세요 ㅎㅎ 사실 그부분만 빼면 괜찮은 코드입니다. 저도 처음에는 그 부분 살려가면서 고치려고 했는데 왜인지 모르게 메모리초과나 틀렸습니다가 뜨더군요. 그럴 때 저는 보통 코드 다듬기를 합니다. 일단.. 저부분은 일단은 비효율적이기 때문에 다듬고.. 다른 부분도 최대한 수강생님 코드 살려가면서 다듬어봤는데요. #include using namespace std; int R, C; int fire_visited[1004][1004]; int jihoon_visited[1004][1004]; int dy[4] = {-1, 0, 1, 0}, dx[4] = {0, 1, 0, -1}; char arr[1004][1004]; pair jihoon; vector > fire_v; void bfs_fire() { queue > q; for (auto &f : fire_v) { q.push(f); fire_visited[f.first][f.second] = 1; } while (!q.empty()) { auto [y, x] = q.front(); q.pop(); for (int i = 0; i = 0 && nx >= 0 && ny fire_visited[y][x] + 1)) { fire_visited[ny][nx] = fire_visited[y][x] + 1; q.push({ny, nx}); } } } } int bfs_jihoon() { queue > q; q.push(jihoon); jihoon_visited[jihoon.first][jihoon.second] = 1; while (!q.empty()) { auto [y, x] = q.front(); q.pop(); for (int i = 0; i = R || nx >= C) return jihoon_visited[y][x]; if (!jihoon_visited[ny][nx] && arr[ny][nx] != '#' && (fire_visited[ny][nx] == 0 || jihoon_visited[y][x] + 1 > R >> C; memset(fire_visited, 0, sizeof(fire_visited)); for (int i = 0; i > arr[i][j]; if (arr[i][j] == 'J') jihoon = {i, j}; else if (arr[i][j] == 'F') { fire_v.push_back({i, j}); fire_visited[i][j] = 1; } } } bfs_fire(); int answer = bfs_jihoon(); if (answer) cout 이렇게 한번 해보시겠어요? 전체적인 로직은 정말 잘 짜셨습니다. ㅎㅎ 틀린부분을 명확하게 알려주고 싶은데 마음대로 되지 않네요. 그래도 최대한 다듬어 봤습니다. ㅎㅎ 또 질문 있으시면 언제든지 질문 부탁드립니다. 좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :) 감사합니다. 강사 큰돌 올림.
- 0
- 1
- 26