목록전체 글 (168)
HyeLog
'1, 2, 3 더하기' 문제는 다이나믹 프로그래밍(dp)으로 푸는 문제다. 9095번(1 ,2, 3더하기)은 재귀와 메모이제이션으로 풀었었는데, 이번에는 반복문으로 풀어보았다. #include #define MAX 1000001 using namespace std; int T, x; long long d[MAX]; void dp(int n) { d[1] = 1; d[2] = 2; d[3] = 4; for (int i = 4; i > x; dp(x); } return 0; }
재귀를 이용한 완전 탐색으로 풀었다. 재귀함수에 현재 날짜와 현재까지의 총이익을 넘겨주어서, 날짜가 N+1이 되는 순간에 총이익의 최대값을 갱신하고 종료하는 방식이다. 현재 날짜에 상담을 하는 경우와 안하는 경우 2가지 경우에 대해 각각 재귀함수를 호출함으로써 모든 경우를 다 탐색할 수 있다. #include #include using namespace std; int N, ans; // 1 T[i] >> P[i]; } solve(1, 0); cout
다이나믹 프로그래밍(dp) 문제였다. 단순한 분할 정복 기법만 사용하면, 답을 구하는 계산을 계속 반복해서 하게 되기 때문에 메모이제이션(답을 배열에 저장해두고 꺼내씀)을 사용하는 기법인 dp를 이용해 풀었다. #include #define MAX 11 using namespace std; int d[MAX]; int solve(int n) { if(n==1) return 1; if(d[n]!=0) return d[n]; if(n==2) return d[n]=solve(n-1)+1; if(n==3) return d[n]=solve(n-1)+solve(n-2)+1; else return d[n]=solve(n-1)+solve(n-2)+solve(n-3); } int main() { int x; cin>>x..
① 비트마스크 풀이 백준 14889 [스타트와 링크] 문제와 거의 똑같지만 조건이 살짝 다른 문제였다. 스타트팀과 링크팀의 인원수가 같지 않아도 되고 1명 이상이기만 하면 되는 문제였다. 따라서, 비트마스크로 팀을 나눌때 반복문의 i를 00001111이 아니라 0부터 시작해야 한다. 또한, 팀의 능력치를 구할 때도 스타트팀과 링크팀의 인원수를 고려해서 따로 구해야 했다. (능력치를 계산하는 조건도 각 팀이 1명 이상이기만 하면 구해야 한다.) #include #include #include // min() #include // abs() #include // INT_MAX #define MAX 20 using namespace std; int N, S[MAX][MAX], x, team1_sum, team..

한 프로젝트를 여러 사람이 같이 할 때 (ex. 메신저 프로그램을 만든다고 하면) 메세지 보내기 기능, 사진 보내기 기능, 친구 목록 보기 기능 등을 하나의 branch 내에서 작업하는 것보다 따로 관리하는 것이 좋음. (각 branch에서 커밋한 내용들은 그 branch내에서만 존재!) 그럼 한 branch에서 작업하다가 에러가 나도 다른 branch 에 영향 X, 기존 branch로 돌아갈 수도 있음! - git branch [브랜치 이름] : 지정한 이름으로 브랜치 생성 (→기존 branch의 해당 시점의 파일 내용과 커밋들이 그대로 반영됨!) - git branch : 존재하는 branch들 확인 - git checkout [들어갈 branch 이름] : 지정한 branch로 접속 ★ confli..
다른 사람의 오픈 소스를 그냥 clone 한 다음, 내마음대로 수정하고 나서 push 해버리면 안됨! (그사람은 자기 코드를 딴사람이 마음대로 바꾸는걸 원하지 않음!) → 그래서 존재하는 것이 fork ! ▷ fork는 딴 사람의 원격저장소--->내 원격저장소 (≠clone은 원격저장소 ---> 로컬 저장소) ▷ pull request 란? 내가 수정한 내용이 원작자의 원격 저장소에 반영되도록 요청하는것! (ex. firefox의 오픈소스를 내가 fork 한 뒤에 create new file 한 다음 pull request) (원작자가 수락해서 내 코드가 반영되었다면, 내가 그 프로젝트에 "contribution" 했다! 고 말함) ※ 깃허브의 issue 기능: 버그를 보고하거나 질문이 있는 경우 개발자..
①-1. git fetch : 본 로컬저장소와 연결된 원격저장소(깃허브)에서 커밋과 파일을 가져옴 → 근데 기존 branch (ex. master)가 아닌 remote branch 로 가져옴! 그래서 merge 해야함 ①-2. git merge [합칠 브랜치 이름] : 현재 작업중인 브랜치에 지정한 브랜치를 합침 (ex. git merge origin/master) ※ git branch -a : 존재하는 모든 branch를 보여주는 명령어 ② git pull [원격 저장소 이름] [작업중인 브랜치] : 원격저장소에서 로컬로 파일 내려받고, 현 작업중인 브랜치에 합침 (fetch+merge를 동시에 하는셈) (ex. git pull origin master)
1) 원격 저장소(깃허브)에서 새로운 빈 레퍼지토리(README 파일 X) 생성하기 2) Git bash에서 내가 연동시킬 로컬 폴더로 cd 3) 명령어: git remote add origin [원격 저장소 주소] 수행하기 (이때 origin은 원격 저장소 주소의 별칭! 원하는 다른 이름을 써도 되지만, origin 으로 부르는 것이 일반적!) 4) 명령어: git push [원격 저장소 별칭] [브랜치 이름] 수행하기 (ex. git push origin master) (이게 실제로 깃이 관리하는 로컬 파일들(내가 커밋한 파일들)을 원격저장소에 동기화하는 것임) + 이때 오류가 날 경우 해결 방법: https://www.youtube.com/watch?v=aSqdjS07Eg8 (5:12~ 참고) + ..