게시글
질문&답변
post 요청
안녕하세요. 웹 API에서 ‘리소스’는 URI로 식별되는 ‘데이터나 기능의 단위’입니다.예를 들어 /users는 사용자 목록 리소스, /articles/42는 ID=42 번 게시글 리소스, /login은 로그인 기능이라는 리소스죠.POST 요청은 일반적으로 ‘리소스에 새 데이터를 등록(create)’하는 데 쓰이지만, 실제로는 각 리소스가 가진 의미에 따라 ‘로그인 처리’, ‘검색 실행’, ‘결제 승인’ 같은 다양한 동작을 수행할 수도 있습니다.따라서 ‘POST를 받으면 반드시 리소스를 생성만 하는 게 아니라, 리소스마다 필요한 로직을 다르게 처리한다’고 이해하시면 됩니다
- 0
- 1
- 6
질문&답변
mutex, semaphore와 deadllock
안녕하세요. Mutex와 Semaphore는 Deadlock을 예방하기 위한 도구가 아니라, ‘동시 접근 제어’(상호 배제·접근 수 제한)를 위한 기본 락입니다.Deadlock(교착 상태)은 여러 스레드가 서로가 가진 자원을 기다리며 영원히 진행하지 못하는 상태를 의미합니다.뮤텍스·세마포어를 잘못 사용하면 Coffman 조건(상호 배제, 점유-대기, 비선점, 순환 대기)을 모두 만족하게 되어 오히려 Deadlock을 유발할 수 있습니다.예를 들어 스레드 A가 ‘락 X → 락 Y’, 스레드 B가 ‘락 Y → 락 X’ 순으로 잡으면 두 스레드가 서로를 기다리며 멈춥니다. 따라서 락을 사용할 때는 다음과 같은 규칙으로 Deadlock을 예방합니다. 전역 락 순서: 모든 자원을 낮은 번호 → 높은 번호 순으로 locktry-lock + 타임아웃: 일정 시간 내에 락을 못 얻으면 롤백 후 재시도임계 구역 최소화: 락 보유 시간을 가능한 짧게 이해가 잘 되었길 바랍니다.추가적인 궁금증이 있으시면 언제든 편하게 질문해 주세요!
- 0
- 3
- 13
질문&답변
노션 공유 부탁드립니다
안녕하세요. 금일 일정상 공유를 드리는 데 제한이 있었습니다. 18시까지는 최대한 공유를 드리도록 하겠습니다. 양해 부탁드립니다.
- 0
- 2
- 20
질문&답변
linkedList - BrowserHistory 코드 질문
안녕하세요, wan님. 맞습니다. BrowserHistory에서 visit 메서드는 속성인 current를 사용하여 O(1)의 시간복잡도로 현재 노드에 바로 접근하고 다음 노드를 추가합니다. (back과 forward 메서드에서 current 값을 조정합니다) 만약 current 속성을 할당하지 않았다면 index 값을 속성을 할당한 후 접근을 해야하기 때문에 O(n)의 시간복잡도가 될 수 있습니다. 이해가 안되는 부분이 있다면 언제든 질문 주시기 바랍니다.감사합니다.
- 0
- 1
- 21
질문&답변
list1.append(list2)와 list1.append(list2[:])의 차이가 무엇인가요?
안녕하세요, 나상민님문제의 핵심은 얕은 복사와 참조의 차이입니다.• result.append(curr)를 사용하면, curr 리스트의 참조를 결과 리스트에 저장합니다.따라서, 백트래킹 과정에서 curr의 내용이 바뀔 때마다 이미 추가된 모든 항목도 같이 변합니다.• 반면에, result.append(curr[:])는 curr의 얕은 복사본을 만들어 저장합니다.이렇게 하면 그 시점의 curr 값이 보존되어, 이후에 curr가 변경되더라도 복사본은 그대로 유지됩니다.main 함수에서 test2와 test2[:]를 비교했을 때는, 둘 다 한 번만 추가되기 때문에 출력 결과가 같지만, 백트래킹처럼 curr을 여러 번 수정하는 경우에는 복사본을 만들어 저장해야 올바른 결과를 얻을 수 있습니다. test1에 추가를 다 하신 후에 test2 배열의 원소를 수정한 후 test1을 출력하면 차이점을 이해하시게 될 겁니다. 즉, 백트래킹에서는 재귀 호출 후 curr.pop()으로 원소를 제거하면서 curr의 상태가 계속 바뀌므로, 현재 상태를 보존하려면 반드시 복사본(curr[:])을 추가해야 합니다.
- 1
- 1
- 98
질문&답변
라이브러리 사용
안녕하세요, CI1717177님.네, 맞습니다. 단순히 ‘중복 없이 값이 존재하는지’만 확인하는 경우라면 set이 훨씬 간단하고 직관적일 수 있습니다. 하지만 본 강의에서는 hash table이 무엇이고, 어떻게 쓰고, 어떤 상황에서 활용할 수 있는지 보여드리는 것이 주요 목적이었기 때문에 가장 기본기인 dictionary를 사용한 것이라고 생각하시면 됩니다. itertools 사용에 대하여 코딩테스트에서 별도 제약이 없다면 활용하셔도 문제 없습니다. 다만, 일부 기업이나 시험 환경에 따라 외부 라이브러리를 제한하거나, 문제 해결 과정을 직접 구현하는 능력을 보고 싶어 할 수 있습니다. 따라서 백트래킹을 손수 구현하는 방식도 충분히 연습해 두는 것이 좋습니다. 백트래킹이 필요한 다른 문제 유형N-QueensSudoku Solve 순열/조합 외에도, 부분집합이나 특정 조건(예: 유효한 괄호 문자열 생성) 등이 포함된 문제 DFS/BFS와의 결합: 그래프나 트리에서 경로를 찾을 때, 조건에 따라 백트래킹이 들어갈 수도 있습니다.답변이 되었길 바랍니다.감사합니다.
- 1
- 2
- 82
질문&답변
문제 교재는 따로 없는 거 맞나요?
안녕하세요, 나상민님. 질문주신 문제는 교재에 내용이 있습니다. (문제 풀이 섹션 -> Two sum)다만, 말씀하신대로 문제의 내용 확인과 풀이는 강의 하단 혹은 교재에 있는 링크를 통해 진행해주셔야 합니다. 감사합니다.
- 1
- 2
- 111
질문&답변
LCA 관련해서 질문이 있습니다.
안녕하세요, 김도현님.해당 강의에서의 left, right는 방문표시를 위한 것이기 보다는 자식 노드를 탐색한 것에 대한 결과라고 생각하시면 됩니다.자식 노드의 값을 얻어오기 위해서는 다시 자식노드의 자식노드를 탐색하는 재귀적인 과정을 거칩니다. 재귀라는 개념이 다소 복잡할 수 있는 내용입니다. 따라서 강의를 다시 들어보시고 코드도 작성해보시면서 곰곰히 생각해보시는 것을 권장합니다. 감사합니다.
- 1
- 2
- 70
질문&답변
[Unique Paths] 완전탐색 / DP (후반부)
안녕하세요. zzzzz님. 1. 첫 번째 행의 경우시작점 (0,0)에서 첫 번째 행의 다른 칸 (0, j)으로 가려면 오른쪽으로만 이동할 수 있습니다.오른쪽으로만 이동하는 경우, 선택의 여지가 없으므로 경로는 유일하게 1가지입니다.따라서 dp[0][j] = 1 (모든 j)가 됩니다.2. 첫 번째 열의 경우마찬가지로, (0,0)에서 첫 번째 열의 다른 칸 (i, 0)으로 가려면 아래로만 이동할 수 있습니다.아래로만 이동하면 역시 경로는 1가지입니다.따라서 dp[i][0] = 1 (모든 i)가 됩니다.3. 나머지 셀의 경우임의의 셀 (i, j)에 도달하는 경로의 수는, 바로 위 (i-1, j)에서 오는 경로의 수와 왼쪽 (i, j-1)에서 오는 경로의 수의 합입니다.즉, dp[i][j] = dp[i-1][j] + dp[i][j-1]가 됩니다. 이 문제의 핵심은 셀에 도달할 수 있는 모든 경우의 수를 구하는 것입니다. 직접 그림을 그리면서 생각해보시면 이해가 잘 되실 겁니다. 추가적인 질문이 있다면 편하게 질문 바랍니다.감사합니다.
- 0
- 1
- 60
질문&답변
dp 계단오르기최소비용질문입니다.
안녕하세요. zzzzz님.질문주신 두 문제 Climbing Stairs와 Min Cost Climbing Stairs는 비슷하지만 문제 요구사항에 있어 차이가 있습니다. Climbing Stairs의 경우 목표와 점화식은 다음과 같습니다.목표: 각 계단에 도달할 수 있는 “방법의 수”를 구하는 것.점화식: memo[i] = memo[i-1] + memo[i-2] 여기서, memo[i]는 i번째 계단에 도달하는 데 가능한 모든 경로의 “개수”를 저장합니다.계단을 밟는 행위 자체에 추가 비용이나 값이 없으므로, 단순히 이전 계단들의 방법의 수를 합산합니다. 반면 Min Cost Climbing Stairs는 이렇습니다.목표: 각 계단에 도달하는 데 드는 최소 비용을 구하는 것.점화식: memo[i] = min(memo[i-1], memo[i-2]) + cost[i] 여기서 memo[i]는 i번째 계단까지 도달하는 총 비용을 저장합니다. 그럼 왜 cost[i]를 더해야 할까요? i번째 계단에 도달할 때 반드시 cost[i] 만큼의 비용을 지불해야 하기 때문입니다.즉, i번째 계단을 밟는 행위 자체가 비용을 발생시킵니다.따라서 이전 계단까지 도달하는 데 드는 최소 비용(즉, memo[i-1] 혹은 memo[i-2])에 현재 계단의 비용 cost[i]를 더해주어야 i번째 계단까지의 총 비용이 계산됩니다. 어떤 계단에 도달하는 비용을 누적해야 하므로, 계단마다 발생하는 추가 비용인 cost[i]를 반드시 포함시켜야 합니다. 반면 Climbing Stairs에서는 어떤 계단에 도달하는 경우의 수만 기록하면 되므로, 계단을 밟는 행위에 별도의 값(비용)을 더할 필요가 없습니다. 단순히 해당 위치에 도달할 수 있는 경우의 수를 구하는 것이 전부입니다. 추가적인 질문이 있다면 편하게 남겨주시기 바랍니다.감사합니다.
- 0
- 1
- 66