백준 문제집에서 여러 플랫폼의 문제들을 하나로 합친 사이트에도 같이 솔루션이 올라가는 레포지토리입니다.
집단 지성 프로젝트를 백준 문제집에서 진행하였지만 확장을 위해 솔루션만 따로 빼서 새로운 레포지토리로 이전을 하였습니다.
이미 푼 문제가 많지만 옛날에 푼 많지만 코드가 깔끔하지 않아 다시 새로 풀려고 합니다. 하지만 저 혼자 하기에는 너무 많은 시간이 필요하고 다��� 일도 하는게 있어서 BaaaaaaaarkingDog님이 하신거와 같이 집단 지성 프로젝트로 만들어보려 합니다.
아래 있는 규칙은 BaaaaaaaaaaarkingDog님이 작성하신걸 참고하여 적었습니다.
백준 문제집 레포에서 올리던 방식과 다릅니다.
기본적으로 아래경로처럼 구성되어 있습니다.
solutions/{온라인 저지 플랫폼}/{문제 번호}/{파일 이름}
백준 문제 솔루션인 경우, 백준 A+B 인 경우 solutions/baekjoon/1000/main.cpp
처럼 구성되어 있습니다.
릿코드 같은 경우는 문제 제목 옆에 문제 번호가 있습니다. 따라서, 해당 문제의 솔루션인 경우 아래 경로처럼 위치해야합니다.
solutions/leetcode/1074/main.cpp
프로그래머스는 문제를 들어가보면 주소창에 문제 번호가 있습니다. 예를 들어, https://school.programmers.co.kr/learn/courses/30/lessons/151138
에서 151138이 알고리즘 번호로 생각하시면 됩니다. 따라서, 해당 경로는 아래처럼 위치하면 됩니다.
solutions/programmers/151138/main.py
solutions/programmers/151138/main.sql
코딩테스트 대비 사이트 에서 해당 문제 번호로 올려주시면 됩니다. 예를 들어, " Select All"이라는 문제에서 문제 번호는 8137입니다. 그러면 솔루션 경로는 아래처럼 위치하면 됩니다.
solutions/hackerrank/8137/main.sql
이미 존재하는 풀이가 있을 경우 Merge가 안될 수 있습니다. 이미 존재하는 솔루션과 다른 풀이인 경우 파일명을 Maintainer가 직접 바꾼후 Merge합니다.
아래 기준을 맞추어 여러분들의 Solution Code를 main branch로 Pull Request (PR) 해주시면 됩니다 !
Pull Request에 대한 설명은 여기에서 보시면 됩니다.
현재 이 Repo는 코딩테스트를 준비하시는 분들을 위해 만든거라 언어는 C, C++, Java, Python 3, Javascript(Node.js), Kotlin, Rust, Swift, Go
총 9가지 언어만 허용합니다. 각 언어에 대한 솔루션 파일명과 제출 언어(ex. C++17)는 아래만 허용합니다.
Language | 파일명 및 확장자 | 백준 제출 언어 |
---|---|---|
C | main.c | C2x, C11 |
C++ | main.cpp | C++14, C++17, C++20 |
Python 3 | main.py | Python 3, PyPy3 |
Java | Main.java | Java 8, Java 11, Java 15 |
Kotlin | main.kt | Kotlin (JVM) |
Node.js | main.js | node.js |
Rust | main.rs | Rust 2015, Rust 2018, Rust 2021 |
Swift | main.swift | Swift |
Go | main.go | Go |
데이터베이스 | main.sql |
해당 규칙은 추가, 수정, 삭제가 될 수 있습니다.
- Rule 0 : (백준 문제 한정) (모든 언어 공통)표준입출력으로 풀어야 합니다.
- Rule 1 : 다른 사람의 솔루션을 자신이 푼 것처럼 Pull Request (PR) 하시면 절대❗️ 안됩니다.
- Rule 2 : 아래와 같이 솔루션 맨 위에 정보를 반드시 넣어주세요. (Authored By에는 각 플랫폼 닉네임으로 넣어야 합니다.)
해당 PR을 확인해주세요.
// Authored by : tony9402
// Co-authored by : -
// Link : http://boj.kr/3ee3d9284f2e4fd7b92b2a22e17d02d6
해당 PR을 확인해주세요.
// Authored by : tony9402
// Co-authored by : -
// Link : https://leetcode.com/problems/palindrome-number/submissions/1163121115
Link는 빈칸으로 생략합니다.
해당 PR을 확인해주세요.
// Authored by : tony9402
// Co-authored by : -
// Link :
Link는 빈칸으로 생략합니다.
해당 PR을 확인해주세요.
// Authored by : tony9402
// Co-authored by : -
// Link :
- Rule 3 : Pull Request (PR) 하나 당 솔루션 하나만 있어야 합니다. 같은 문제여도 언어마다 다르게 PR을 보내야 합니다. 이는 관리의 편의성을 위해 적용합니다.
- Rule 4 :
Allow edits by maintainers
옵션을 허용으로 둬야합니다. Rule 5 : 분류에 맞는 솔루션을 올려야 합니다.- Rule 5 : 맨 아래에 코드에 대한 풀이를 올려주세요. PR에도 어떤 방식으로 풀었는지 간단하게 자신의 풀이를 남겨주세요.
C, C++, Java인 경우
/* Solution Description
~~ 솔루션 설명
*/
Python인 경우
""" Solution Description
~~ 솔루션 설명
"""
각 언어의 주석에 맞게 변경해주시면 됩니다.
- Rule 6 : 1 Tab == 4 space, 즉 들여쓰기는 반드시 공백문자 4개로 해야합니다.
- Rule 7 : 입출력은 C++ stream을 이용해야 합니다.
ios::sync_with_stdio(false); cin.tie(nullptr);
이 main 함수 안에 맨 첫줄에 있어야 합니다.endl
대신'\n'
을 써야합니다. - Rule 8 :
#define, typedef
는typedef long long ll;
또는#define ll long long
만 허용됩니다. - Rule 9 : 논리 연산자인
and, or
인 경우는 반드시&&, ||
로 사용해야 합니다. - Rule 10 : 반드시 실수 연산을 해야하는 경우는
float
보단double
로 사용해주세요. 이 외에는 반드시 정수에서 연산을 해주세요. - Rule 11 :
queue, priority_queue, stack, list
등과 같은 자료구조는 STL을 이용해주세요. - Rule 12 : 문자열은 반드시
char*
대신string
을 이용해주세요. - Rule 13 :
goto
문을 쓰지 말아주세요.
- Rule 14 : (백준 문제 한정) 입력시 해당 코드 처럼 input 함수를 만들어 입력을 받아야 합니다.
- Rule 15 : (백준 문제 한정) 해당 코드 처럼 FastReader Class를 이용해서 입력을 받아야 합니다.
- Rule 16 : 변수와 함수의 이름은 어느 정도 의미하는 바를 드러내면서도 코드가 간결하도록 최대 10 글자 이내로 해주세요.
hap
,gop
,gaesan
와 같은 변수명이나 함수명은 사용하지 말아주세요. - Rule 17 : 너무 많은 중첩 if문을 피해주세요.
- Rule 18 : 불필요한 연산이 없도록 최대한 정리를 해주세요.
- Rule 19 : 소스코드 일부에 어떤 코드인지 간단한 주석처리를 해주시면 감사하겠습니다. 다른 분들이 보실 때 코드만 볼 경우 이해가 안되는 경우가 있습니다.