코테 뿌시기!
38군데 합격 비법, 2024 코딩테스트 필수 알고리즘
₩165,000
초급 / Python, 코딩 테스트, data-structure, 알고리즘
5.0
(192)
초보자도 쉽게 이해하는 단계별 설명으로, 막연했던 코딩 테스트가 명확해집니다. 필요한 것만 배우고 바로 실전에 적용하세요!
초급
Python, 코딩 테스트, data-structure
7년차 서버개발자입니다
다양한 강의를 올려보고 싶습니다!
파이썬, 웹개발, 알고리즘, 개발자 취업 등등..
유튜브 채널 딩코딩코를 운영하고 있습니다
https://www.youtube.com/@%EB%94%A9%EC%BD%94%EB%94%A9%EC%BD%94
코테 뿌시기!
38군데 합격 비법, 2024 코딩테스트 필수 알고리즘
₩165,000
초급 / Python, 코딩 테스트, data-structure, 알고리즘
5.0
(192)
초보자도 쉽게 이해하는 단계별 설명으로, 막연했던 코딩 테스트가 명확해집니다. 필요한 것만 배우고 바로 실전에 적용하세요!
초급
Python, 코딩 테스트, data-structure
모집마감
개발자 취업 뽀개기 오프라인 모임 2회차 (3년차 이하)
₩33,000
입문 / 이력서
신청
25. 01. 02 ~ 25. 01. 13
일정
25. 01. 19 ~ 25. 01. 19
입문
이력서
단 60분! 파이썬 핵심 개념 초압축 강의 - 이론보다 이해 중심
무료
입문 / Python
4.8
(69)
60분안에 파이썬의 핵심 개념을 이해시키려고 합니다! 맹목적인 문법이 아닌, 왜(Why)와 언제(When) 쓰는지에 집중했습니다
입문
Python
질문&답변
이 번에 처음으로 알고리즘이라는 걸 공부해보고 있는데
안녕하세요 근희님! 좋은 질문 감사합니다1주차 연습문제를 안보고 풀 수 있는 정도면 상당히 좋은 출발점에 있으신 겁니다!!!! 알고리즘 학습 초기에 그 정도 수준이면 기본 개념을 잘 이해하고 계신 것으로 볼 수 있습니다 알고리즘 학습은 처음에는 누구에게나 어렵습니다. 지금 어렵게 느껴지는 것은 매우 자연스러운 과정이니 너무 걱정하지 마세요. 중요한 것은 꾸준한 복습과 연습입니다. 알고리즘은 반복적인 학습과 다양한 문제 해결 경험을 통해 점차 익숙해지는 분야입니다. 실제 코딩테스트의 난이도는 회사마다, 직무마다 매우 다양합니다 기본적인 자료구조와 알고리즘 개념을 활용한 문제가 출제되는 경우도 있고여러 개념을 복합적으로 적용해야 하는 더 어려운 문제가 나오기도 합니다하지만 대부분의 기업 코딩테스트는 기본기를 얼마나 잘 이해하고 있는지 확인하는 데 중점을 둡니다. 따라서 지금 학습하시는 내용들을 탄탄하게 다지시면 충분히 대비할 수 있을 겁니다! 어렵더라도 포기하지 마시고 계속 도전하세요! 알고리즘 실력은 하루아침에 향상되지 않습니다. 지금 어렵게 느껴지는 것들이 나중에는 당연하게 느껴질 날이 반드시 올 거예요. ㅎㅎㅎ 꼭 합격까지 빠이팅하시길 바라겠습니다!!!
질문&답변
스택 - 탑문제
수빈님 오랜만에 질문 탭에서 뵙는 것 같습니다벌써 겨울이 지나고 봄인데 잘 지내시죠?? 좋은 질문 주셔서 감사합니다!!강의에서 제시되었던 코드는 반복문에서 스택을 사용하도록 변경한 코드라서, 실제로 큰 입력값을 처리하기에는 효율적이지 않습니다!현재 코드의 시간복잡도는 O(n²)으로:각 탑마다 (while heights:)이전의 모든 탑을 순회하며 확인합니다 (for idx in range(len(heights) - 1, -1, -1):)백준과 같은 알고리즘 문제 사이트에서는 보다 효율적인 O(n) 알고리즘이 필요합니다. 아래는 스택을 활용한 개선된 코드입니다def top_stack(N, tops): result = [0] * N stack = [] # (인덱스, 높이) 저장 for i in range(N): # 현재 탑보다 낮은 탑은 스택에서 제거 while stack and stack[-1][1] 이 개선된 알고리즘은각 탑을 한 번씩만 처리합니다스택에는 레이저 신호를 수신할 가능성이 있는 탑의 정보만 유지합니다불필요한 비교를 피해 시간복잡도를 O(n)으로 개선합니다 해당 개선 방식에 대해서 추가적으로 교재에서 다뤄봐도 좋을 것 같습니다!추후에 알고리즘 영상을 보완하는 시점에 해당 문제 풀이 방법에 대해서도 작성해보도록 하겠습니다강의 개선 아이디어 주심에 대한 감사의 의미로 커피 기프티콘을 드리겠습니다 아래 카카오톡 오픈 링크로 연락 부탁드립니다!!https://open.kakao.com/me/ding_coding_co감사합니다
질문&답변
3-8 해쉬 관련 다른 풀이도 궁금해요.
안녕하세요 Tommy 님! 좋은 질문 감사합니다!!맞습니다! HashTable과 Set 자료구조 모두 평균적인 조회 성능은 O(1)입니다. 따라서 제시하신 코드처럼 Set을 사용하여 문제를 해결하는 접근법은 시간복잡도 측면에서 매우 효율적입니다. 두 방식 모두 전체 시간복잡도는 O(n + m)으로 동일합니다. 여기서 n은 all_array의 길이, m은 present_array의 길이입니다.set 방식의 장점은 코드가 더 간결하고 읽기 쉽습니다. 이번 문제에서는 학생의 유니크함을 보장하고 있기 때문에 더 명확하다고 할 수 있을 것 같습니다. 다만, 만약 동명이인이 나타난다면 어떻게 처리를 할지 정도 고려해봐도 좋을 것 같습니다여러가지 고민을 해보시는 습관 너무 좋습니다! 완강까지 빠이팅입니다!
질문&답변
재귀함수 관련 질문
안녕하세요 금융 ToIT님!! 좋은 질문 감사합니다말씀주신대로 재귀함수는 개념은 이해하기 쉽지만 실제 구현에서 어려움을 겪기 쉬운 것 같습니다!프로그래머스에서 재귀함수 기본기를 익힐 수 있는 문제들을 추천해 드리겠습니다. 재귀함수 입문 문제하노이의 탑 - 재귀의 고전적인 예제입니다.팩토리얼 계산 - 가장 기본적인 재귀함수 예제입니다.피보나치 수열 - 재귀의 기초를 익히기 좋은 문제입니다.중급 난이도 문제쿼드압축 후 개수 세기 - 영역을 4분할하여 재귀적으로 처리합니다.괄호 변환 - 문자열을 분할하고 재귀적으로 처리하는 문제입니다.모음 사전 - 재귀를 활용한 문자열 생성 문제입니다. 재귀함수를 구현할 때는 다음 단계를 따르시면 도움이 됩니다:재귀가 종료되는 조건을 명확히 합니다.큰 문제를 작은 문제로 분할합니다.축소된 문제에 대해 함수를 다시 호출합니다. 문제들의 결과를 결합하여 원래 문제의 답을 구합니다.각 문제를 풀 때마다 위의 단계를 명확하게 구분해보면 재귀함수에 대한 감을 잡는 데 도움이 될 것 같습니다! 재귀 호출 시 함수가 어떻게 호출되고, 반환값이 어떻게 처리되는지 직접 따라가보시는 것도 추천드립니다.학생분이 구체적으로 어떤 문제에서 어려움을 겪고 있는지 알려주시면 더 맞춤형 도움을 드릴 수 있을 것 같습니다.
질문&답변
다음 알고리즘의 경우 괜찮은 접근인지 궁금해요
안녕하세요 Tommy 님 좋은 질문해주셔서 감사합니다!!두 코드를 비교해보면원래 코드는 알파벳 발생 빈도 계산한 번만 등장한 문자들의 배열 생성원래 문자열을 다시 순회하면서 처음 발견된 중복되지 않는 문자 반환Tommy 님의 코드는알파벳 발생 빈도 계산(별도 함수로 분리)원래 문자열을 한 번만 순회하며 빈도가 1인 첫 문자 바로 반환처럼 변경이 된 것 같습니다! Tommy 님의 접근 방식이 실제로 더 효율적입니다!함수를 분리하여 코드 가독성이 향상되었습니다.중간 배열(not_repeating_character_array)을 만들지 않아 메모리 사용이 더 효율적입니다.원래 코드는 문자열을 두 번 순회하지만, 질문자분의 코드는 한 번만 추가로 순회합니다.또한 문제의 의도(첫 번째로 중복되지 않는 문자 찾기)를 정확히 구현했습니다. 아주 좋은 개선이라고 생각합니다!! 👍 👍
질문&답변
5-4. 카카오 신입 개발자 블라인드 채용 1차 코딩테스트 - 2 질문입니다.
안녕하세요 가희님! 좋은 질문 주셔서 감사합니다!! 먼저, 문제의 핵심 부분을 다시 살펴보겠습니다.매개변수로 주어지는 p는 균형잡힌 괄호 문자열입니다.알고리즘 내에서 w를 분리할 때는 '균형잡힌 괄호 문자열'인 u와 나머지 v로 분리합니다.예시로 주신 "))()(" 케이스를 봅시다:이 문자열은 '('가 2개, ')'가 3개로 균형잡힌 괄호 문자열이 아닙니다.따라서 이 문자열이 매개변수 p로 주어지는 경우는 문제의 조건에 맞지 않습니다.문제는 균형잡힌 괄호 문자열 p가 주어졌을 때, 이를 올바른 괄호 문자열로 변환하는 알고리즘을 구현하는 것입니다. 따라서 W 는 반드시 균형잡힌 괄호 문자열이라고 가정하고 풀어야 할 것 같습니다! 아마 가희님께서 구현하신 코드를 보면,코드에서 is_this_correct_parentheses 함수는 '균형잡힌 괄호 문자열'인지 확인합니다 (열린 괄호와 닫힌 괄호의 개수가 같은지).하지만 루프에서 tmp_u = W[:i]로 분리할 때, 이 부분 문자열이 균형잡힌 괄호 문자열인지 확인한 후 바로 break하면, "더 이상 분리할 수 없는" 조건을 만족시키지 못할 수 있습니다. 즉 제시된 코드는 균형잡힌 괄호 문자열을 올바르게 찾지 못하는 경우가 있어, 예시 "))()(" 같은 입력에서 오류가 발생할 수 있습니다. 그런데 이 예시는 애초에 균형잡힌 괄호 문자열이 아니라서 문제의 전제 조건을 위반합니다. 실전에서는 이런 전제조건에 따라 구현방향성이 매우 갈리는 경우가 많아서, 전제조건에 맞춰서만 구현하는 것을 권장드립니다! 알고리즘 학습 시에는 "만약 이 전제조건이 깨지는 상황에서는 어떻게 하면 문제를 해결할 수 있을까?" 라는 가정을 열어보면서 문제를 해결해보시는 것도 좋을 것 같습니다! 요 관점에서 트라이해보신거라면 짱입니당
질문&답변
강의 진행하면서 이해도 및 진행방향에 대한 질문입니다.
안녕하세요 홍구님 좋은 질문 해주셔서 감사합니다!! 프로그래밍과 알고리즘을 배우는 과정에서 많은 분들이 정말 비슷하게 힘들어 하시는 것 같습니다!! 물론 저도 엄청 처음에 힘들었습니다 ㅋㅋㅋㅋ 코드를 이해하는 것과 직접 작성할 수 있는 것은 분명 다른 과정이라고 생각합니다제 경험에 비추어 보면, 다음과 같은 접근 방식이 효과적이었습니다!개념 이해를 먼저: 모든 개념을 충분히 이해한 다음 문제를 다시 보면서 풀이 방법을 차근차근 생각해보세요.따라 작성해보기: 이해한 코드를 보면서 직접 타이핑해보는 과정이 중요합니다. 처음엔 그대로 따라 적더라도 큰 의미가 있습니다.변형해보기: 코드의 일부를 의도적으로 수정해보고 어떻게 결과가 달라지는지 관찰해보세요. 그 과정에서 내가 사고하는 것들이 맞는지 확인할 수 있습니다.비슷한 문제 풀기: 배운 개념을 적용할 수 있는 유사한 문제를 풀어보면서 사고의 흐름을 체득하는 시간이 필요합니다."이해는 가지만 직접 작성은 어렵다"는 단계는 정말 모든 프로그래머가 거치는 과정입니다! 이 단계에서 멈추지 말고 계속 강의를 들으면서 병행하여 직접 코딩하는 연습을 하시길 권장드립니다. 시간이 지나면 자연스럽게 코드 작성 능력이 향상될 거에요!!결국, 암기보다는 원리 이해와 반복 연습을 통한 체득이 중요합니다. 강의를 통해 개념을 이해하고, 그 개념을 실제로 적용해보는 과정을 반복하다 보면 어느 순간 스스로 코드를 작성할 수 있게 될거에요!!끝까지 포기하지 마시고 꾸준히 연습하시는 홍구님을 옆에서 응원하겠습니다!!이렇게 고민하는 순간부터 실력은 꾸준히 향상되실거에요!!빠이팅이십니다!!
질문&답변
[특.별. 문제집 노션] 문제에서 링크 매칭 문의
안녕하세요 오잇님! 질문주셔서 감사합니다 해당 문제의 경우, 유사한 시중 알고리즘 문제가 존재하지 않아서 SQL 문제를 이용해서 대체했습니다! SQL 내의 요구사항과 비슷한 구현으로 알고리즘 문제가 출시되었다고 봐주시면 좋을 것 같습니다.오잇님이 말씀해주신 것처럼 처음 문제 링크를 들어갔을 때 당황하실 수 있을 것 같아, 테이블에 설명을 추가해두겠습니다 제보해주셔서 감사드립니다!! 더 좋은 자료로 개선하겠습니다 +_+
질문&답변
수강평 인증 이벤트 끝났나요?
안녕하세요! 아직 수강평 이벤트 진행하고 있습니다! 질문 주셔서 감사합니다 __
질문&답변
알파벳 빈도수 세기 정답
안녕하세요 maran님 질문 감사합니다!!제가 교재 부분에 값을 잘못 넣어둔 것을 확인했습니다!! 말씀해주신 코드를 아래와 같이 변경해서 학습 부탁드리겠습니다 잘못된 입력값을 넣어 혼동을 드려 죄송합니다 ;_;더 좋은 강의를 만들 수 있도록 질문해주셔서 넘넘 감사드립니다!!!def find_alphabet_occurrence_array(string): alphabet_occurrence_array = [0] * 26 for char in string: if not char.isalpha(): continue arr_index = ord(char) - ord('a') alphabet_occurrence_array[arr_index] += 1 return alphabet_occurrence_array print("정답 = [1, 0, 2, 2, 2, 0, 2, 1, 3, 0, 0, 2, 2, 3, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0] \n현재 풀이 값 =", find_alphabet_occurrence_array("hello my name is dingcodingco")) print("정답 = [1, 0, 0, 0, 2, 0, 1, 1, 1, 0, 0, 2, 1, 0, 2, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0] \n현재 풀이 값 =", find_alphabet_occurrence_array("we love algorithm")) print("정답 = [0, 3, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 3, 2, 0, 0, 0, 1, 0] \n현재 풀이 값 =", find_alphabet_occurrence_array("best of best youtube"))