알고리즘 문제풀이 소스코드를 공유하고 싶은 경우, 아래 기여 방법을 확인해주세요!
Algorithm 레포지토리는 알고리즘 문제풀이 소스코드를 공유하는 레포지토리 입니다. 이 레포지토리의 관리자는 깃헙을 능숙하게 다루는 편이 아닙니다. 다만, 알고리즘을 공부하면서 동시에 깃헙도 공부할 수 있는 프로젝트를 진행해보고자 만든 레포지토리입니다. 입문자들이라면 더더욱 환영입니다. Issue, Pull Request, Merge등 처음 접해볼 수 있는 어색한 기능들을 이곳에서 직접 날려보고 오류를 경험하며 공부하실 분은 언제든지 환영입니다.
- 현재 레포지토리를 fork합니다.
- 기여자님의 레포지토리에 생성된 fork 레포지토리를 로컬 저장소에 받습니다. (git clone)
- 아래 형식에 맞게 디렉토리를 생성하거나 기존 디렉토리에 작업합니다.
- 아래 형식에 맞게 코드에 주석으로 설명을 작성합니다.
- 아래 형식에 맞게 커밋 메시지를 작성하여 fork한 레포지토리에 push합니다.
- 아래 형식에 맞게 PR(Pull Request)를 전송합니다.
프로그래밍 언어 > 문제 풀이 사이트 > 문제 풀이 소스 코드 파일형태로 생성합니다.- 디렉토리 구조 및 파일명은 관리자 및 Collaborator들에 의해 언제든지 변경될 수 있습니다.
- 언어와 문제풀이 사이트 구분만 확실히 해주시면 되고 따로 엄격한 룰은 존재하지 않습니다.
- 소스코드 파일명의 제한은 없습니다. 자유롭게 하시면 됩니다.(다만, 어떤 문제인지 확인이 가능할 정도여야 합니다)
- 소스코드 최상단에 문제의 링크를 주석처리 해주시면 더욱 좋습니다.
- 만약, 중복된 문제의 다른 풀이가 존재하면
해당파일명-고유번호로 입력합니다.
백준 온라인 져지(BOJ), 자바스크립트
js > BOJ > 0~9999 > 1000.js
프로그래머스, 레벨1, 자바스크립트
js > Programmers > Level1 > 문제.js
- 기타 알고리즘 혹은 자료구조 등에 대한 공부 내용을 올리실 때, 디렉토리가 존재하지 않을 경우에는 Issue 남겨주시면 신속하게 방안을 마련하도록 하겠습니다.
ex) Issue: 자바스크립트 다익스트라 알고리즘에 대해서 공부한 내용을 올리고 싶은데 디렉토리가 존재하지 않습니다! 해결해주세요!
- 최상단에 문제 링크를 입력합니다.
- 입력값 예시, 출력값 예시, 입력값 파싱, 초기에 설정한 변수들을 입력합니다.
- 소스코드를 입력합니다.(소스코드에 대한 설명을 주석으로 달아주시면 매우 좋습니다)
- 채점 결과 및 풀이 알고리즘 참고 문서 등을 간단하게 입력합니다.
- 정답과 무관한 값 확인용 출력 코드들은 삭제 부탁드립니다.
- 2022년 3월 25일 이전에 작성된 코드들은 위 규칙이 지켜지지 않은 경우가 있습니다. Issue 남겨주시면 최대한 빨리 수정하겠습니다.
- 예시
// 문제 링크: {링크}
/**
* 입력값 예시
* 6
* 10 30 10 20 20 10
*
* 출력값 예시
* 3
*
* 파싱
* N = 6
* arr = [10, 30, 10, 20, 20, 10]
*
* 초기 설정
* count = [1, 1, 1, 1, 1, 1]
* max = 1
*/
const fs = require("fs");
let [N, arr] = fs.readFileSync("input.txt").toString().split("\n");
arr = arr.split(" ").map(Number);
let count = new Array(+N).fill(1);
let max = 1;
/**
* 주어진 arr의 뒤에서부터 시작한다.
* arr[i] 이후의 수 중 arr[i]보다 작은 수들에 대하여 (arr[j] < arr[i])
* count[i], count[j] + 1 의 대소비교 후 큰 값을 count[i]값으로 지정
* max값 업데이트
*/
for (let i = arr.length - 2; i >= 0; i--) {
for (let j = arr.length - 1; j > i; j--) {
if (arr[j] < arr[i]) {
count[i] = Math.max(count[i], count[j] + 1);
max = Math.max(max, count[i]);
}
}
}
console.log(max);
/**
* 메모리: 9676KB
* 시간: 220ms
* 언어: JS
* 해설 참조 링크: https://blog.naver.com/y2kdj9723/222681642602
*/[문제사이트-문제번호-프로그래밍언어] 문제번호(제목)형태로 입력합니다.
git commit -m "[BOJ-1000-JS] A+B"- 기존 문제 풀이 소스코드를 수정할 경우에는
fix:를 추가합니다.
git commit -m "fix: [BOJ-1000-JS] A+B"- 실패한 문제풀이의 경우 소스코드의 주석 형태와 설명을 유지한 체 커밋 메시지에
fail:을 추가합니다.
git commit -m "fail: [BOJ-1000-JS] A+B"- 블로그 글을 작성하고 참조하고 싶을 때는
blog:를 추가합니다.
git commit -m "blog: [BOJ-1000-JS] A+B"- 'PR' 메시지는 커밋 메시지와 동일합니다.
- 'PR'은 그날 배운 내용 혹은 풀었던 문제들을 주석과 함께 정리하여 전송합니다.
- 한 번의 'PR'에 너무 많은 내용을 담지 않도록 합니다.
- 가급적 하나의 주제 혹은 문제를 정리해서 올립니다.(너무 많은 내용을 한번에 올리시면 반영에 어려움이 있습니다.)
- 'comment'의 형식은 자유롭게 작성하나, 가장 어려웠던 부분, 새롭게 배운 것 위주로 작성합니다.
- Collaborators의 Approval이 최소 한 개 이상일 때, Merge됩니다.
- 'PR' 전송했지만 답변이 없는 경우 Issue나 메일 보내주시면 감사하겠습니다.