Skip to content

Commit

Permalink
add: 2024-autumn-exercise/adhoc.md
Browse files Browse the repository at this point in the history
  • Loading branch information
m4ushold committed Sep 24, 2024
1 parent 959f4fc commit 7f2b99a
Showing 1 changed file with 50 additions and 0 deletions.
50 changes: 50 additions & 0 deletions slides/2024-autumn-exercise/adhoc.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
---
marp: true
---

# Recursion
소프트웨어학부 진민성

---
# 등차수열의 합
### 풀이
- 어떤 수열 $A=\left\{ A_1,A_2,\cdots ,A_N \right\}$이 등차수열이라는 것은, $2\leq i\leq N$인 모든 $i$에 대해 $A_i-A_{i-1}$이 모두 동일한 수열을 말한다. 정의에 따라 길이가 $2$ 이하인 수열은 항상 등차수열이다.
- $0~ 0~ 0~ 0~ 0~ 0~ 0~ ...$은 등차수열
- 따라서 b,c는 항상 존재하고 $A$와 $0$으로 이루어진 수열을 출력하면 된다.

---
# SW 수열 구하기
### 풀이
- $| A_i - A_{i-1} | > |A_{i+1} - A_i|$이다.
- 가장 차이가 큰 1과 N을 가장 앞에 두고 생각해보자
- $1,~N$ 다음으로 차이가 큰 수를 생각해보면 2이다.
- 마찬가지로 생각을 해보면 $\set{1, N, 2, N-2, ... N/2}$이런 모양의 수열이 나온다.

---
# 동가수열 구하기
### 풀이
- 동가수열은 $1$ 이상 $N$ 이하인 정수로 이루어져 있고, 모든 원소는 서로 다르다.
- 동가수열의 서로 이웃한 원소의 차는 $\lfloor \frac{N}{2} \rfloor$이상이다.
- 단순하게 $a$다음 $a+\lfloor n/2 \rfloor$를 배치했다고 생각해보자.
- 그러면 $a+\lfloor n/2 \rfloor$ 다음에 올 수 있는 수로 $a-1$을 생각해볼 수 있다.
```
for(int i=n/2;i>0;i--) cout << i << ' ' << i+n/2 << ' ';
```
- n이 홀수인경우에만 예외처리 해주면 풀 수 있다.

---
# 영어 시험
### 풀이
- 길이 N의 character set S로 이루어진 모든 문자열과 최장공통부분수열이 같은 최소 길이의 문자열을 찾는 문제
- 문자열의 $i$번째 문자를 생각해 보자
- 모든 $i$번째 문자에 대해서 $c \in S$모든 c를 뽑을 수 있으면 된다.
- 따라서 $S$를 $N$번 출력하면 된다.

---
# 회문은 회문아니야!!
### 풀이
- 팰린드롬이 아닌 가장 긴 부분문자열의 길이를 출력한다. 그런 부분문자열이 없으면 -1을 출력한다.
- 만약 문자열이 팰린드롬이 아니면 주어진 문자열의 길이를 그대로 출력하면 된다.
- 문자열이 하나의 문자로 이루어져 있으면 항상 팰린드롬 이므로 -1을 출력한다.
- 문자2개이상으로 이루어진 팰린드롬이라면 맨앞이나 맨뒤 문자하나를 빼면 팰린드롬이 아니게 되므로 문자열길이-1을 출력하면 된다.

0 comments on commit 7f2b99a

Please sign in to comment.