Skip to content

Commit

Permalink
init: 2024-autumn-exercise
Browse files Browse the repository at this point in the history
  • Loading branch information
m4ushold committed Sep 15, 2024
1 parent 3a9b7fe commit 0600fb6
Show file tree
Hide file tree
Showing 4 changed files with 265 additions and 0 deletions.
49 changes: 49 additions & 0 deletions .github/workflows/marp-to-pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: md-to-pages
concurrency: md-to-pages

on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:

- name: Checkout code
uses: actions/checkout@v3

- name: Ensure build dir exists
run: mkdir -p build

- name: Copy images directory (if exists)
run: if [[ -d img ]]; then cp -R img build/img; fi

- name: Marp Build (README)
uses: docker://marpteam/marp-cli:v3.0.2
with:
args: README.md -o build/index.html
env:
MARP_USER: root:root

- name: Check if slides folder exists
id: slides-folder-exists
run: bash -c "[[ -d slides ]] ; echo \"has_slides=\$?\" >> \"$GITHUB_OUTPUT\""

- name: Marp Build (slides folder, if exists)
if: steps.slides-folder-exists.outputs.has_slides == '0'
uses: docker://marpteam/marp-cli:v3.0.2
with:
args: -I slides/ -o build/slides/
env:
MARP_USER: root:root

- name: Deploy production
if: ${{ github.event_name == 'push' }}
uses: JamesIves/github-pages-deploy-action@v4
with:
branch: gh-pages
folder: ./build/
clean-exclude: pr-preview/
Binary file added img/2024-autumn-schedule.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
36 changes: 36 additions & 0 deletions slides/2024-autumn-exercise/ot.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
marp: true
---

# 2024-2 기초 연습
진민성

---

# 진행방식
- 1주에 문제가 10~20문제 정도 제공됩니다.
- 화 (개념강의 & 문제풀이), 목 (문제 풀이)
- 개념 강의
- 기초 강의와 같이 [jhnah917님의 자료](https://github.com/justiceHui/SSU-SCCC-Study)를 바탕으로 개념을 가르칩니다.
- 문제 풀이
- 스터디 전 문제를 미리 풀어옵니다.
- 문제마다 풀어온 사람중 랜덤하게 자신의 풀이를 발표합니다.
- 마지막으로 제가 문제의 접근 방식과 풀이를 설명합니다.

---

# 문제
https://www.acmicpc.net/group/21908
백준 그룹 연습에서 문제를 확인하실 수 있습니다.

---

# 일정
![w:600](../../img/2024-autumn-schedule.png)
https://sccc.kr/study/2024/2


---

# 한국정보올림피아드위원회 공식 유튜브 채널
[IOI KOREA](https://youtu.be/8cSjBQtqEXY)
180 changes: 180 additions & 0 deletions slides/2024-autumn-exercise/recursion.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,180 @@
---
marp: true
---

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

---

# 쿼드트리

### 문제요약
- $2^n \times 2^n$ 흑백 영상이 주어짐
- 주어진 영상이 모두 같으면 "0" 혹은 "1"로 압축이 가능
- 만약 0과 1이 섞여 있으면 4개의 구역으로 나누어 압축
- 압축 결과를 출력하는 문제

---

### 풀이
- 4개의 구역으로 나누어 재귀적으로 처리한뒤 모두 합친 결과를 반환
- 결과가 "0000" 혹은 "1111"형태라면 "0"혹은 "1"로 압축한뒤 반환

---

# Z

### 문제요약
- 크기가 $2^N × 2^N$인 2차원 배열을 Z모양으로 탐색
- $2\times2$배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양
- 정수 $N, r, c$ $(1 ≤ N ≤ 15, 0 ≤ r, c < 2^N)$가 주어졌을 때, $r$행 $c$열을 몇 번째로 방문하는지 출력하는 문제

---

### 풀이
- 크기 $2^n$의 이차원 배열을 4개의 구역으로 나누었을때 r, c가 각 사분면에 속하는 경우
- 방문순서가 최소 $ka$이상이라는 것을 알 수 있다. $(k \in \set{0,1,2,3}, a=2^{n-1}\times2^{n-1})$
- 1사분면 a=$1\times a$
- 2사분면 a=$0\times a$
- 3사분면 a=$2\times a$
- 4사분면 a=$3\times a$
- 재귀적으로 $r,c$가 어느 사분면에 있는 지 확인하고 각 $ka$들을 답에 더해가면 답을 구할 수 있다.

---

# 레밸 햄버거
### 문제요약
- 패티를 $P$, 번을 $B$, 레밸-$L$버거를 $A_L$이라 하자
- $A_0 = P$
- $A_L = BA_{L-1}PA_{L-1}B$
- 정수 $N, X$가 주어짐 ($1 ≤ N ≤ 50, 1 ≤ X ≤ A_N 버거에 있는 레이어의 수$)
- $N$-레밸 버거의 아래 $X$장을 먹었을때 먹은 패티의 개수를 구하는 문제

---

### 풀이
- $A_L$의 패티 개수를 $P(L)$, 길이를 $len(L)$라고 하고
- $f(N,X)$를 $N$레벨버거의 아래 $X$장의 패티의 개수라고 하자.
- $f(0,X) = 1$
- $f(N,X)$를 구하기 위해 5가지 경우로 나눌 수 있다. ($A_L = BA_{L-1}PA_{L-1}B$)
- $X == 1$ -> $0$
- 첫번째 버거 안에 속하는 경우 -> $f(N-1, X-1)$
- X가 정확히 중간 패티까지인 경우 -> $P(L-1) + 1$
- 두번째 버거 안에 속하는 경우 -> $P(L-1) + 1 + f(N-1, X-1-len(N-1))$
- 마지막 번을 가르키는 경우 -> $2 \times P(L-1)+1$

---

# 랭퍼든 수열쟁이야!
### 문제요약
- 랭퍼드 수열은 두 개의 n 사이에는 정확히 n개의 수가 있는 길이 2n의 수열
- n이 주어졌을 때, x번째 수와 y번째 수가 같은 길이 2n의 랭퍼드 수열의 개수를 구하는 문제
- 세 자연수 $n, x, y$가 주어진다. $(2 ≤ n ≤ 12, 1 ≤ x < y ≤ 2n, 1 ≤ y-x-1 ≤ n)$

---

### 풀이
- x, y번째 수가 같다는 것은 x, y번째 수가 모두 y-x+1

- 현재 탐색중인 인덱스를 i라고 하자.
- 만약 i가 2n이라면 수열을 모두 채운 것이기 때문에 정답을 1 증가시킨다.
- 만약 i번 인덱스가 아직 채워지지 않았다면, 사용하지 않은 수 중 i번째 인덱스에 삽입가능한 수를 채우고 다음인덱스부터 재귀적으로 탐색
- i번 인덱스가 채워져 있다면 바로 다음 인덱스에서 탐색을 다시 시작

---

# 무한 수열
### 문제요약

무한 수열 A가 다음과 같이 정의 된다.
- $A_0 = 1$
- $A_i = A_{⌊i/P⌋} + A_{⌊i/Q⌋} (i ≥ 1)$
- $N, P$와 $Q$가 주어질 때, $A_N$을 구하는 문제
- $0 ≤ N ≤ 10^{12}, 2 ≤ P, Q ≤ 10^9$

---

### 풀이
- $A_{j \in \set{⌊i/P⌋, ⌊i/Q⌋}}$를 모를 경우 재귀적으로 구할 수 있다.
- $N$의 크기가 int 범위를 벗어나기 때문에 long long을 사용해야 한다.
- map<long long,long long>을 이용하면 $10^9$크기의 배열을 선언하지 않고 구할 수 있다.

---

# 별찍기 - 11
### 문제요약
- $N = 3\times 2^k$가 주어질 때 대충 이런 모양의 별을 찍으면 된다.
- $0 ≤ k ≤ 10, k \in \mathbb{Z}$
```
*
* *
*****
* *
* * * *
***** *****
```

---
### 풀이
- $N$의 크기가 $3\times 2^{10}$보다 작으므로 $N\times 2N$짜리 이차원배열을 만들어서 배열을 채우고 출력하면 된다.
- 삼각형을 그릴 시작 좌표와 크기를 기준으로 재귀를 돌면 된다.
- n이 3일때 배열에 삼각형에 해당하는 위치에 *을 넣어주고 출력하면 된다.

---

# 사분면
- Todo

---

# Messi Gimossi
- Todo

---

# 프랙탈 평면

- Todo

---

# Palindrome Type

- Todo

---

# 나무늘보

- Todo

---

# 피이보나치 트리

- Todo

---

# IQ test

- Todo

---

# (재미있고 웃기고 센스있고 깔끔한 제목)

- Todo

---

# 잘생긴 GCD

- Todo

---

# Subseqeuence Sum Queries

- Todo

0 comments on commit 0600fb6

Please sign in to comment.