Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 95 additions & 0 deletions week05/hyejun.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
> [!NOTE]
> 이 파일을 복사해서 `week0N/{영문이름}.md`로 저장한 뒤 작성해주세요.
> AI나 블로그 풀이를 그대로 복사하지 않고 본인의 언어로 정리해주세요.

# N주차 문제 풀이 인증

## 기본 정보

- 이름: 구혜준
- 목표 문제 수: 3
- 실제 풀이 문제 수: 3

---

# 오답노트

## 문제 1

- **문제명:** 멀리 뛰기
- **문제 링크:** https://school.programmers.co.kr/learn/courses/30/lessons/12914
- **알고리즘 / 자료구조:** 동적 계획법

### 접근 및 시행착오

각 칸에 도착하는 방법을 직접 나열하려 했지만, n이 커지면 경우의 수가 빠르게 늘어나 계산하기 어렵다. 마지막에 1칸을 뛰거나 2칸을 뛰는 두 경우로 나누어 생각했다.

### 최종 풀이

n번째 칸에 도착하려면 n-1번째 칸에서 1칸을 뛰거나, n-2번째 칸에서 2칸을 뛰어야 한다. 따라서 이전 두 칸의 경우의 수를 더해 현재 값을 구했다. 계산할 때마다 1234567로 나눈 나머지를 저장했다.

### 복잡도

- 시간복잡도: O(n)
- 공간복잡도: O(n)

### 핵심 포인트

현재 경우의 수를 이전에 계산한 결과로 구할 수 있다면 동적 계획법을 생각해 볼 수 있다.

---

## 문제 2

- **문제명:** 점프와 순간 이동
- **문제 링크:** https://school.programmers.co.kr/learn/courses/30/lessons/12980
- **알고리즘 / 자료구조:** 그리디, 이진수

### 접근 및 시행착오
0부터 출발하는 방법을 생각하니 점프와 순간이동 순서를 정하기 어려웠다. 반대로 목적지에서 0으로 이동한다고 생각하니 필요한 연산이 명확해졌다.


### 최종 풀이
현재 거리가 짝수이면 순간이동으로 온 것이므로 2로 나눈다. 홀수이면 점프로 1칸 이동한 것이므로 건전지 사용량을 1 증가시키고 1을 뺀다. 이 과정을 거리가 0이 될 때까지 반복했다.


### 복잡도

- 시간복잡도: O(log n)
- 공간복잡도: O(1)

### 핵심 포인트
정방향 풀이가 복잡할 때는 도착점에서 출발점으로 거꾸로 계산해 보는 것도 방법이라는 사실을 배웠다.


---

## 문제 3

- **문제명:** N개의 최소공배수
- **문제 링크:** https://school.programmers.co.kr/learn/courses/30/lessons/12953
- **알고리즘 / 자료구조:** 유클리드 호제법

### 접근 및 시행착오
모든 수의 배수를 직접 확인하면 불필요한 계산이 많아진다. 두 수의 최소공배수를 차례대로 구하면 여러 수에도 같은 방식을 적용할 수 있다고 생각했다.


### 최종 풀이
유클리드 호제법으로 두 수의 최대공약수를 구한 뒤, 두 수의 곱 ÷ 최대공약수로 최소공배수를 계산했다. 배열의 앞에서부터 현재 최소공배수와 다음 수의 최소공배수를 반복해서 구했다.


### 복잡도

- 시간복잡도: O(n log M)
- 공간복잡도: O(1)

### 핵심 포인트
여러 수의 최소공배수는 두 수씩 차례대로 합쳐서 구할 수 있다.


---

# 다음 주 목표

- 목표 문제 수: 3
- 집중할 유형: 완전탐색 / 백트래킹 / 시뮬레이션 1