Skip to content

Commit 7a2ef42

Browse files
authored
기본 파일 추가
추가된 파일들 : - 도메인 `md` - 작성 `example` 들 추가 - 규칙들 추가
2 parents 7759ed4 + a35a7b4 commit 7a2ef42

File tree

15 files changed

+580
-43
lines changed

15 files changed

+580
-43
lines changed

README.md

Lines changed: 114 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,114 @@
1-
# Algorithm-Study
2-
Repository for ALGOHAZA - Algorithm study
1+
## Algorithm-Study : 알고하자
2+
3+
---
4+
5+
## 🤷‍♂️ What is ALGO-HAZA?
6+
7+
#### 알고하자는 정기적 알고리즘 풀이를 목적으로 하는 모임입니다.
8+
9+
디스코드에서 운영중이며 모각코, 문제풀이 공유 활동을 진행하고 있습니다.
10+
11+
- `discord` : [`link`]()
12+
- 활동 시기 : `2024/04 ~ `
13+
14+
---
15+
16+
## 🖍 Activity
17+
18+
- 매주 2 회 `PR 기여` 를 진행합니다.
19+
- 매주 1 회 `모각코/문제풀이` 를 진행합니다.
20+
- `PR` 미제출, `모각코/문제풀이` 미참시 경고가 1 회 누적됩니다.
21+
- 경고는 매월 1 일에 초기화되며, 경고 3 회 초과 시 통보 후 퇴출됩니다.
22+
- `PR` 미제출은 어떠한 사유도 허용되지 않으며, `모각코/문제풀이` 사전에 허락받은 사유만 인정됩니다.
23+
24+
## 🍳 `PR 기여`
25+
26+
- `PR 기여` 의 마감일은 매주 `수요일`, `토요일` 의 자정입니다. `(수 -> 목, 토 -> 일 밤)`
27+
- 풀이하는 문제는 각자 자유롭게 선택하며, `PR` 당 최소 1 문제를 풀이해야 합니다.
28+
- 풀이한 문제마다 다음을 포함한 파일들이 존재해야 합니다.
29+
30+
- a. 문제의 간략한 설명
31+
- b. 문제 풀이 방법 정리
32+
- c. 문제 해결 인증 스크린샷
33+
- d. 정답 소스코드
34+
35+
- 각 파일은 `markdown` `(.md)` 으로 제작하는 것을 권장합니다.
36+
- `PR` 제출 후, 관리자의 리뷰에 따라 `PR` 이 승인됩니다.
37+
38+
## 💻 `모각코/문제풀이`
39+
40+
- `모각코/문제풀이` 활동은 매주 `일요일` 에 이루어집니다.
41+
- 해당 활동에 총 2 문제 `(풀이 + 공유 및 발표)` 를 진행합니다.
42+
- `모각코/문제풀이` 활동 중 `웹캠` 은 필수사항이 아니지만, `마이크` 는 필수사항입니다.
43+
- 사전 알림 없이 활동에 미참시 경고 1 회가 누적됩니다.
44+
- 개인 사정으로 참여가 불가할 시, `토요일 23:00` 이전에 공지해야 합니다. 이후의 공지는 받지 않습니다.
45+
46+
---
47+
48+
## 💡 참여 방법
49+
50+
1. 이 저장소를 `fork` 한 후, 각 멤버별 `{Github ID}` 폴더를 만듭니다.
51+
2. 폴더 내 풀이한 문제를 `정리` 합니다.
52+
3. `PR` 템플릿에 맞춰 이 저장소에 `PR` 을 보냅니다.
53+
4. 관리자의 `PR` 리뷰에 따라 `PR` 이 승인되거나 보충됩니다.
54+
55+
56+
## 📁 문제 정리 구조
57+
58+
문서 구조는 크게 `M_{활동연도}_{월}`, `{주차수}`, `{풀이 문제}` 로 나뉩니다.
59+
60+
```
61+
jbw9964/ # 멤버 별 활동 폴더
62+
├── M_2024_03
63+
└── M_2024_04 # 활동 연도/월
64+
├── Week_2
65+
└── Week_3 # 활동 주차 수
66+
├── P_2609 # 풀이 문제
67+
│   ├── README.md # 문제 설명 + 풀이 정리
68+
│   ├── Solution_2609.java # 정답 소스코드
69+
│   └── approval_2609.PNG # 인증 스크린샷
70+
└── P_10950
71+
├── README.md
72+
├── Solution_10950.java
73+
└── approval_10950.PNG
74+
75+
6 directories, 6 files
76+
```
77+
78+
각 멤버별 활동 폴더 `(예시 : jbw9964)` 내 위 구조처럼 조직합니다.
79+
80+
- `M_{활동연도}_{월}` 폴더는 해당 `연도/월` 에 활동한 내역을 저장합니다.
81+
- `{주차수}` 폴더는 활동한 주차별로 제작합니다.
82+
- `{풀이 문제}` 폴더는 `풀이한 문제` 를 기록하는 폴더입니다.
83+
84+
---
85+
86+
## 🔖 `Commit 예시` & `PR` 규칙
87+
88+
#### - [`Commit 예시`](./docs/rules/github_repository/commit_and_organization.md#🔖-commits)
89+
90+
#### - [`PR 규칙`](./docs/rules/github_repository/pr_rules.md)
91+
#### - [`PR 템플릿`](./docs/pull_request_template.md)
92+
93+
---
94+
95+
## 📑 Repository Description
96+
97+
|`Directory`|`Description`|
98+
|:---:|---|
99+
|`/assets`| 저장소의 예시, 이미지 등이 저장된 폴더입니다. |
100+
|`/docs`| 저장소와 관련된 문서 등이 저장된 폴더입니다. |
101+
|`{Github ID}`| 멤버별 활동이 저장된 폴더입니다. |
102+
|[`경고조회 페이지`](https://github.com/ALGOHAZA-Study/Algorithm-Study/wiki/%EA%B2%BD%EA%B3%A0-%EC%A1%B0%ED%9A%8C-%ED%8E%98%EC%9D%B4%EC%A7%80)| 멤버별 누적된 경고를 조회하는 페이지입니다. |
103+
104+
105+
106+
---
107+
108+
## 👋 Members
109+
110+
| <img src="https://avatars.githubusercontent.com/jbw9964" width=100px height=100px> | |
111+
|:---:|:---:|
112+
|[`jbw9964`](https://github.com/jbw9964)| |
113+
114+
---

assets/README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
2+
### This directory is for assets of ALGO-HAZA study
3+
4+
---
5+
6+
|`Directory`|`Description`|
7+
|:---:|:---:|
8+
|[`example`](./example/)| 활동 기록 예시 |
9+
|[`image`](./image/)| Image that share with other documents |
10+
11+
---

assets/example/P_2609/README.md

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
2+
---
3+
4+
## 🔖 문제 설명
5+
6+
- 주어진 두 수의 최대 공약수와 최소 공배수를 구하는 문제이다.
7+
- `link` : [`click`](https://www.acmicpc.net/problem/2609)
8+
9+
---
10+
11+
## 🍳 스스로 생각한 접근 방식
12+
13+
문제를 보니 유클리드 호제법을 이용하면 좋겠다는 생각이 들었다.
14+
15+
> 💡 유클리드 호제법이란?
16+
최대 공약수를 구하는 대표적인 알고리즘으로, **“두 수 a, b (a > b) 가 있을 때, 이 둘 간의 서로소 r 은 b 와 (a % b) 의 서로소와 같다”** 는 법칙이다.
17+
자세한 내용은 [`[1]`](#1--euclidean-algorithm---wikepedia) 을 참고하는 것이 좋을 듯 하다.
18+
19+
호제법을 이용하면 아주 간편히 최대 공약수를 알아낼 수 있다. 그런데 생각해보니 최대 공약수를 이용하면 최대 공배수 또한 알 수 있었다.
20+
21+
두 수 $A, B$ 의 최대 공약수를 $r$ 이라 하면, $A = a \times r, \ \ B = b \times r$ 로 나타낼 수 있다.
22+
23+
이 때 두 수의 최대 공배수는 $a \times b \times r = A \times B \div r$ 로 나타낼 수 있다.
24+
25+
결국 유클리드 호제법만 잘 구현하면 끝나는 문제인 것이다.
26+
27+
---
28+
29+
30+
## ❗ 틀린 이유 설명
31+
32+
`(올바르게 문제를 풀이했다)`
33+
34+
---
35+
36+
37+
## ✅ 올바른 접근 방식 및 해결 방식
38+
39+
`(올바르게 문제를 풀이했다)`
40+
41+
---
42+
43+
## 🛠 자신의 풀이에서 개선할 부분
44+
45+
유클리드 호제법의 시간 복잡도를 생각해 보았다.
46+
47+
직관적으로 생각했을 때, $O(\mathbf{log}(N))$ 과 유사할 것이라 생각하였다. 애초에 유클리드 호제법은 두 수의 `modulo` 연산으로 이뤄지기 때문이다.
48+
49+
찾아본 결과 [`[2]`](#2--euclidean-algorithm---codility) 와 같은 글을 볼 수 있었고, 이에 따르면 호제법은 $O(\mathbf{log(max}(a, b)))$ 의 시간 복잡도를 가진다 한다.
50+
51+
---
52+
53+
## Reference
54+
55+
- ##### [`[1] : Euclidean algorithm - Wikepedia`](https://en.wikipedia.org/wiki/Euclidean_algorithm)
56+
- ##### [`[2] : Euclidean algorithm - Codility`](https://codility.com/media/train/10-Gcd.pdf)
57+
58+
---
59+
60+
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package assets.example.P_2609;
2+
3+
import java.io.BufferedReader;
4+
import java.io.IOException;
5+
import java.io.InputStreamReader;
6+
import java.util.StringTokenizer;
7+
8+
public class Solution_2609 {
9+
10+
private static final BufferedReader br = new BufferedReader(
11+
new InputStreamReader(System.in)
12+
);
13+
14+
15+
public static void main(String[] args) throws IOException {
16+
StringTokenizer tokenizer = new StringTokenizer(br.readLine());
17+
18+
int num1 = Integer.parseInt(tokenizer.nextToken());
19+
int num2 = Integer.parseInt(tokenizer.nextToken());
20+
21+
int gcd = GCD(num1, num2);
22+
int lcm = num1 * num2 / gcd;
23+
24+
System.out.println(gcd);
25+
System.out.println(lcm);
26+
}
27+
28+
public static int GCD(int a, int b) { // get Greatest common divisor using euclidean algorithm
29+
while (b != 0) {
30+
int mod = a % b;
31+
a = b;
32+
b = mod;
33+
}
34+
35+
return a;
36+
}
37+
}
58 KB
Loading

assets/image/logo.png

51.5 KB
Loading

docs/README.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
2+
### 🍳 해당 디렉토리는 ALGO-HAZA study 의 문서들이 저장된 디렉토리입니다.
3+
4+
---
5+
6+
## 📁 Directories
7+
8+
|`Directory`|`Description`|
9+
|:---:|:---:|
10+
|[`how_to`](./how_to/)| `~ 하는 방법` 에 해당하는 문서가 저장된 폴더입니다. |
11+
|[`rules`](./rules/)| 규칙과 관련된 문서가 저장된 폴더입니다. |
12+
13+
14+
---
15+
16+
## 📄 Files
17+
18+
|`File`|`Description`|
19+
|:---:|:---:|
20+
|[`pull_request_template.md`](./pull_request_template.md)| PR 템플릿 |
21+
22+
---

docs/how_to/How_to_contribute.md

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,23 @@
1010
<!-- contribute_1.png -->
1111

1212
<p align="center">
13-
<img src="proxy.php?url=https%3A%2F%2Fgithub.com%2F..%2F..%2Fassets%2Fimage%2FHow_to_contribute%2Fcontribute_1.png", width=50%, height=50%>
13+
<img src="proxy.php?url=https%3A%2F%2Fgithub.com%2F..%2F..%2Fassets%2Fimage%2FHow_to_contribute%2Fcontribute_1.png", width=70%, height=70%>
1414
</p>
1515

1616
여러분의 `Fork-Repo` 상단을 보면 `Contribute`, `Sync fork` 버튼이 있습니다. `Contribute``Pull Request` 를 만드는 버튼이고 `Sync fork` 는 상위 `Repo` 와 동기화 하는 버튼입니다.
1717

1818
<!-- contribute_2.png -->
1919

2020
<p align="center">
21-
<img src="proxy.php?url=https%3A%2F%2Fgithub.com%2F..%2F..%2Fassets%2Fimage%2FHow_to_contribute%2Fcontribute_2.png", width=50%, height=50%>
21+
<img src="proxy.php?url=https%3A%2F%2Fgithub.com%2F..%2F..%2Fassets%2Fimage%2FHow_to_contribute%2Fcontribute_2.png", width=70%, height=70%>
2222
</p>
2323

2424
`Sync fork` 를 누르면 동기화를 진행할 것인지 묻는 버튼이 나옵니다. 이 때 `Discard commits` 버튼을 누르면 `Fork-Repo` 의 개발 내용이 모두 사라질 수 있으므로 각별히 주의하시길 바랍니다.
2525

2626
<!-- contribute_3.png -->
2727

2828
<p align="center">
29-
<img src="proxy.php?url=https%3A%2F%2Fgithub.com%2F..%2F..%2Fassets%2Fimage%2FHow_to_contribute%2Fcontribute_3.png", width=50%, height=50%>
29+
<img src="proxy.php?url=https%3A%2F%2Fgithub.com%2F..%2F..%2Fassets%2Fimage%2FHow_to_contribute%2Fcontribute_3.png", width=70%, height=70%>
3030
</p>
3131

3232
`Update branch` 버튼을 누르면 자연스레 동기화가 진행됩니다.
@@ -38,31 +38,31 @@
3838
<!-- contribute_4.png -->
3939

4040
<p align="center">
41-
<img src="proxy.php?url=https%3A%2F%2Fgithub.com%2F..%2F..%2Fassets%2Fimage%2FHow_to_contribute%2Fcontribute_4.png", width=50%, height=50%>
41+
<img src="proxy.php?url=https%3A%2F%2Fgithub.com%2F..%2F..%2Fassets%2Fimage%2FHow_to_contribute%2Fcontribute_4.png", width=70%, height=70%>
4242
</p>
4343

4444
`Contribute``Open Pull Request` 버튼을 누릅니다.
4545

4646
<!-- contribute_5.png -->
4747

4848
<p align="center">
49-
<img src="proxy.php?url=https%3A%2F%2Fgithub.com%2F..%2F..%2Fassets%2Fimage%2FHow_to_contribute%2Fcontribute_5.png", width=50%, height=50%>
49+
<img src="proxy.php?url=https%3A%2F%2Fgithub.com%2F..%2F..%2Fassets%2Fimage%2FHow_to_contribute%2Fcontribute_5.png", width=70%, height=70%>
5050
</p>
5151

5252
버튼을 누르면 `PR` 에 포함될 커밋들을 볼 수 있습니다. 여기서 우측 `Create Pull Request` 버튼을 누르면, `Fork-Repo` 의 개발 내역을 상위 `Repo` 에 넣어주는 `PR` 을 생성할 수 있습니다.
5353

5454
<!-- contribute_6.png -->
5555

5656
<p align="center">
57-
<img src="proxy.php?url=https%3A%2F%2Fgithub.com%2F..%2F..%2Fassets%2Fimage%2FHow_to_contribute%2Fcontribute_6.png", width=50%, height=50%>
57+
<img src="proxy.php?url=https%3A%2F%2Fgithub.com%2F..%2F..%2Fassets%2Fimage%2FHow_to_contribute%2Fcontribute_6.png", width=70%, height=70%>
5858
</p>
5959

6060
버튼을 누르면 해당 `PR` 이 무엇에 관한 내용인지 서술하는 내용이 나옵니다.
6161

6262
<!-- contribute_7.png -->
6363

6464
<p align="center">
65-
<img src="proxy.php?url=https%3A%2F%2Fgithub.com%2F..%2F..%2Fassets%2Fimage%2FHow_to_contribute%2Fcontribute_7.png", width=50%, height=50%>
65+
<img src="proxy.php?url=https%3A%2F%2Fgithub.com%2F..%2F..%2Fassets%2Fimage%2FHow_to_contribute%2Fcontribute_7.png", width=70%, height=70%>
6666
</p>
6767

6868
기본 양식에 맞춰 작성 후, `Create Pull Request` 버튼을 누르면 완료됩니다.
@@ -76,17 +76,21 @@
7676
<!-- contribute_8.png -->
7777

7878
<p align="center">
79-
<img src="proxy.php?url=https%3A%2F%2Fgithub.com%2F..%2F..%2Fassets%2Fimage%2FHow_to_contribute%2Fcontribute_8.png", width=50%, height=50%>
79+
<img src="proxy.php?url=https%3A%2F%2Fgithub.com%2F..%2F..%2Fassets%2Fimage%2FHow_to_contribute%2Fcontribute_8.png", width=70%, height=70%>
8080
</p>
8181

82-
위 그림은 상위 `Repo` 에 설정한 규칙으로 `"PR 이 수락되지 않은 상태"` 입니다. `PR` 이 수락되려면 적어도 관리자 1 명의 승인을 받아야 합니다.
82+
위 그림은 상위 `Repo` 에 설정한 규칙으로 `"PR 이 수락되지 않은 상태"` 입니다.
83+
84+
`PR` 이 수락되려면 적어도 관리자 1 명의 승인을 받아야 합니다.
8385

8486
<!-- contribute_9.png -->
8587

8688
<p align="center">
87-
<img src="proxy.php?url=https%3A%2F%2Fgithub.com%2F..%2F..%2Fassets%2Fimage%2FHow_to_contribute%2Fcontribute_9.png", width=50%, height=50%>
89+
<img src="proxy.php?url=https%3A%2F%2Fgithub.com%2F..%2F..%2Fassets%2Fimage%2FHow_to_contribute%2Fcontribute_9.png", width=70%, height=70%>
8890
</p>
8991

90-
`PR` 제출 시 관리자가 변경점, 누락된 부분 등을 감안해 추가적인 내용을 요구할 수 있습니다. 관리자의 승인 후, 관리자의 `merge` 를 통해 여러분의 개발 내역이 상위 `Repo` 에 적용되게 됩니다.
92+
`PR` 제출 시 관리자가 변경점, 누락된 부분 등을 감안해 추가적인 내용을 요구할 수 있습니다.
93+
94+
관리자의 승인 후, 관리자의 `merge` 를 통해 여러분의 개발 내역이 상위 `Repo` 에 적용되게 됩니다.
9195

9296
---

0 commit comments

Comments
 (0)