Skip to content

Judy-999/AlgorithmStudy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

알고리즘 스터디

1. 스터디 개요 🧑‍🏫

1.1. 개인 문제풀이

  • 매주 자신이 원하는 문제를 두 문제 이상 풀고, 커밋하고, PR 보냅니다. 더 풀어도 좋습니다.
    • 단, 이때, 커밋 규칙과 개인별 README 작성법을 따릅니다.
  • 푼 문제를 바탕으로 티어(브실골플)를 정합니다.
    • 정확히 어떤 티어인지는 개인의 자신감에 맡깁니다.
    • 티어는 백준 혹은 프로그래머스를 기준으로 합니다.
    • 이 티어는 메인페이지 README에 프로필과 함께 게시합니다.

1.2. 티어전

  • 매주 민쏜이 같은 티어 별로 둘씩 짝지어 매치를 잡아드립니다. 두 분이 문제를 정하고, 같은 시간에 만나 문제풀이 하시면 됩니다. 단, 여유있는 제한 시간을 두도록 합니다. 제한 시간이 끝나면 서로의 코드를 리뷰해주고, 같이 자료를 찾아보거나, 서로 설명을 해주며 문제 풀이 방법과 필요한 개념(문법)을 정리합니다.

1.3. 공통사항

  • 개인 공부와 티어전에 정리된 사항을 개인사정으로 수행하지 못하면 매주 5천원의 벌금이 있습니다.

1.4. 참여 방법

  1. https://github.com/minsson/algorithm-study-in-swift 저장소를 fork 합니다.

  2. 개인 문제풀이, 티어전에 대한 참여 방법을 읽고, 수행합니다.

1.5. 스터디 인원

🥉 BRONZE


민쏜

Derrick Kim

Kiwi

Judy

unchain

BaekGom

웡빙

현이

finnn1

borysarang

bard

재재

수꿍

bonf


2. 개인 문제풀이 🏋️‍♀️

2.1. 참여 방법

1. 생성된 원격 저장소에 `닉네임`으로 폴더를 생성합니다.
2. 매주 원하는 문제 2문제 이상을 풀며, `커밋 규칙`에 따라 각 문제 별로 커밋합니다.
3. `개인별 README 작성법`에 따라, 커밋한 문제는 README에 추가합니다.
4. 원본 저장소로 `Pull Request` 합니다. (매주 2문제 이상, 매주 일요일에 Merge예정)
5. 티어전 규칙에 따라 티어전을 수행합니다.

2.2. 커밋 규칙

주의사항

  • .DS_Store 파일은 커밋에 포함시키지 말아주세요.
  • 최초로 본인의 폴더를 만들 때를 제외하고, root directory에는 그 어느 것도 추가, 수정, 삭제되어서는 안됩니다.

Commit Header, Body

  • Header: [문제 플랫폼] 문제 이름 / 난이도 / 풀이 시간
  • Body: 문제 Link

문제 플랫폼 별 작성법

  • [BOJ] - 백준
  • [PGS] - 프로그래머스
  • [LTC] - 리트코드
  • 위에 해당하지 않을 시 민쏜에게 문의

커밋 예시

  • 터미널 사용 시
git commit -m "[BOJ] A+B / 브론즈5 / 5분" -m "https://www.acmicpc.net/problem/1000"
  • Fork 사용 시

2.3. 개인별 README 작성법

README 파일 하나에 문제 풀이에 필요한 개념을 쌓아나가는 방식으로 작성합니다.

플랫폼과 레벨 별로 분류하여 정리합니다.

# 백준 (플랫폼 이름)

## 브론즈

### [문제이름1](커밋 주소) <-- 링크 생성을 위함
- 문자열 출력하는 방법      <-- 알게된 내용, 복습한 내용, 중요한 내용 등..
    - 아래와 같이 print() 안에 출력하고자 하는 내용을 넣으면 된다.
        ```swift
        print("Hello, World!")
        ```

### [문제이름2](커밋 주소)
- 정수를 더하는 방법
    - 아래와 같이 Int + Int 형태로 쓰면 된다.
        ```swift
        let a = 3
        let b = 5
        let sum = a + b
        ```

## 실버

### [문제이름1](커밋 주소) <-- 링크 생성을 위함
- 배운 내용, 문제 해결에 필요한 지식
    - ...

### [문제이름2](커밋 주소)
- 배운 내용, 문제 해결에 필요한 지식
    - ...

# 프로그래머스 (플랫폼 이름)

## Level 1

### [문제이름1](커밋 주소)
- 배운 내용, 문제 해결에 필요한 지식
    - ...

2.4. 코드 작성법 (예시)

main.swift

main 파일에서 커밋할 때의 정답 제출용 함수를 호출합니다. 과거 풀이한 문제의 함수는 주석처리 해놓습니다.

//MARK: - 백준 Bronze 5

/*
answer_BOJ_A플러스B_1000()
answer_BOJ_문제이름_1001()
answer_BOJ_문제이름_1002()
*/

//MARK: - 프로그래머스 Level 1

/*
answer_PGS_문제이름1()
answer_PGS_문제이름2()
*/
answer_PGS_문제이름3()

프로젝트 Directory 구조

플랫폼 별, 레벨 별로 폴더를 관리합니다.

.
main.swift
├── 📂 TierMatch
      ├── 💾 BOJ_3000.swift
      ├── 💾 BOJ_5000.swift
      └── 💾 PGS_1234.swift
├── 📂 BOJ
      ├── 📂 BRONZE
              ├── 💾 BOJ_1000.swift
              └── 💾 BOJ_문제번호.swift
      └── 📂 SILVER
               ├── 💾 BOJ_1001.swift
               └── 💾 BOJ_문제번호.swift
└── 📂 PGS
       ├── 📂 LEVEL_1
               ├── 💾 PGS_문제번호.swift
               └── 💾 PGS_문제번호.swift
       └── 📂 LEVEL_2
                ├── 💾 PGS_문제번호.swift
                └── 💾 PGS_문제번호.swift

각 문제별 파일

주석에 문제명과 문제 주소를 표기합니다.

//
//  BOJ_A플러스B_1000.swift <- 문제명
//  AlogrithmsStudy-Minsson <- 프로젝트명
//
//  Created by minsson on 2022/09/21.
//  https://www.acmicpc.net/problem/1000 <- 문제 주소

import Foundation

func answer_BOJ_A플러스B_1000() {
    let input = readLine()!
    let inputArray = input.components(separatedBy: " ")
    let numberA = Int(inputArray[0])!
    let numberB = Int(inputArray[1])!
    print(numberA + numberB)
}

2.6. 티어 구분

  • 2주에 한번씩 티어 업데이트 기간을 가집니다. README를 수정해 PR 보내주시면 됩니다.
  • 플랫폼마다 다르므로 개인이 적절한 티어를 선택해서 적용해주시면 됩니다.
  • 아래와 같이 플랫폼 별로 티어의 명칭도, 난이도도 다르지만, 우리는 재미를 위해 브론즈-실버-골드-플래티넘의 난이도로 합니다. (아래의 자료도 주관적인 자료이므로 정확한 티어 선택은 개인에게 맡깁니다.)
    • 스터디 시작 전 집계 결과 놀랍게도 모두가 브론즈를 택하셨습니다… 🤨

3. 티어전 (페어 문제풀이) ⚔️

3.1. 운영방식

  • 매주 티어 별로 2명을 랜덤으로 매칭해 공지합니다. 홀수일 경우 근접 티어와 매칭합니다.
  • 두 명이 짝이 되어, 같은 시간에 만나 한 개 이상의 문제를 풀고, 서로의 코드를 보며 알게된 점, 중요한 점 등을 정리하여 리드미에 올립니다. (양식과 업로드 위치 추후 지정)

3.2. README 작성법

개인별 문제풀이에서 작성했던 README의 가장 아래에 마크다운 문법으로 구분선(---)을 긋고 아래와 같은 양식으로 작성합니다. 즉, 하나의 파일에 개인별 문제풀이 내용과 티어전 내용이 공존합니다.

개인별 문제풀이 관련 내용
...
...
...

---

## 101주차
### 레벨
### 참가자
[닉네임](깃허브주소) <- 마크다운 문법으로 링크 생성
[닉네임](깃허브주소) 🏅 <- 더 빠르게 정답을 낸 사람 옆에 메달 이모지

### 문제 풀이

### 알게된 점

### 중요한 점

### 기타

3.3. 커밋 규칙

함께 문제를 풀고 토의하지만, 커밋은 각자 진행합니다. 자신의 풀이든, 상대방의 풀이든, 두 사람이 함께 만든 새로운 풀이든 상관 없이 원하는 풀이를 각자 커밋합니다. 즉, 하나의 티어전에서 2개의 동일한 풀이가 커밋될 수 있습니다. 단, 아래의 커밋 예시를 따라야 합니다.

주의사항

  • .DS_Store 파일은 커밋에 포함시키지 말아주세요.
  • 최초로 본인의 폴더를 만들 때를 제외하고, root directory에는 그 어느 것도 추가, 수정, 삭제되어서는 안됩니다.

Commit Header, Body

  • Header: [티어전][참가자1🏅, 참가자2][문제 플랫폼] 문제 이름 / 난이도 / 풀이 시간

    • 승자의 닉네임 뒤에 🏅 이모지를 붙입니다.
  • Body: 문제 Link

문제 플랫폼 별 작성법

  • [BOJ] - 백준
  • [PGS] - 프로그래머스
  • [LTC] - 리트코드
  • 위에 해당하지 않을 시 민쏜에게 문의

커밋 예시

  • 터미널 사용 시
git commit -m "[티어전][참가자1🏅, 참가자2][문제 플랫폼] 문제 이름 / 난이도 / 풀이 시간" -m "https://www.acmicpc.net/problem/1000"
  • Fork 사용 시

4. Pull Request Template 📝

아래의 Pull Request Template은 Github에서 Pull Request를 보낼 때 자동으로 적용됩니다. 불필요한 내용을 삭제하거나 수정하여 제출해주시면 됩니다.

🙋 PR 방법

  • PR은 개인문제풀이와 티어전을 모두 수행한 후 1회만 진행합니다.
  • 개인문제풀이도, 티어전도 모두 각자 이름으로 된 프로젝트 파일에 넣어 작성, 커밋, PR합니다.
  • 티어전 부전승의 경우, 개인문제풀이만 진행 후 PR 가능합니다. 이 경우 양식의 티어전 Header는 그대로 두고, 내용은 작성하지 않습니다.
  • PR 제목: 닉네임 / n주차 / n문제 + 티어전 [스터디원1🏅, 스터디원2] (예시: minsson / 1주차 / 2문제 + 티어전 [minsson🏅, 홍길동])

🧑‍🏫 수행내역

🧑‍💻 개인문제풀이 n문제

위의 n에 푼 문제 수를 적어주세요. 커밋 메시지의 Header를 그대로 복사해, 아래에 리스트 형식으로 이번 주에 푼 문제를 정리해주세요.

  • [BOJ] HelloWorld / 브론즈5 / 1분 <- 이렇게요. 이건 예시이므로 실제 작성시 지워주세요.

🤼 티어전

티어전 커밋 메시지의 Header를 그대로 복사해, 아래에 작성해주세요.

  • [티어전][스터디원1🏅, 스터디원2][PGS] 콜라츠 추측 / 브론즈(레벨1) / 15분 <- 이렇게요. 이건 예시이므로 실제 작성시 지워주세요.

✏️ 기타사항

작성하고 싶은 내용을 자유롭게 작성해주세요.

About

알고리즘 풀이 기록

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages