📘 오늘의 공부
- 알고리즘 Code Kata
- git 2차 특강 정리
정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요.
Math.floor()
function solution(num1, num2) {
var answer = Math.floor(num1 / num2 * 1000)
return answer;
}
새로운 지식
Math.floor()
는 소수점을 내림한다. ex) Math.floor(23.3) = 23, Math.floor(-23.3) = -24가 된다. 음수인 경우도 생각해서 소수점을 이하 수를 없애고 싶을때는 Math.trunc()
를 사용하는 것이 좋다.
코드 예시 : Math.trunc()
function solution(num1, num2) {
return Math.trunc(num1 / num2 * 1000);
}
문제 2. 각도기
각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요.
내 코드 : 부등호는 하나씩 쓰기 주의
function solution(angle) {
if (angle < 90) {
return 1;
} else if (angle === 90) {
return 2;
} else if (90 < angle && angle < 180) {
return 3;
} else if (angle === 180) {
return 4;
}
}
문제 3.짝수의 합
정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.
제한사항
0 < n ≤ 1000
로직 생각해보기
아이디어
ex1) 2부터 / 조건에 n이하 적기 / i += 2
ex2) 초기값 n / 조건에 2이상 /
짝수의 합 : for 문 안에서 더해주면 됨
(외부 변수 선언, +=로 합치기)
풀이 : for문으로 해결하기
function solution(n) {
let answer = 0;
for (i = 1; i <= n; i++) {
if (i % 2 === 0) {
answer += i
}
} return answer;
}
문제 4. 배열의 평균값
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.
제한사항
0 ≤ numbers의 원소 ≤ 1,000
1 ≤ numbers의 길이 ≤ 100
정답의 소수 부분이 .0 또는 .5인 경우만 입력으로 주어집니다.
풀이 : reduce
사용
function solution(numbers) {
let result = numbers.reduce(function(arr, cur, idx, src) {
return arr + cur
}, 0)
let result2 = result / numbers.length;
return result2;
}
reduce 함수
let result = arr.reduce(function(arr, cur, idx, src) {
return arr + cur;
}, 0)
arr
: 누적값cur
: 현재값idx
: 인덱스src
: 원본 배열1. 로컬, 원격 브랜치 생성
로컬 브랜치 만드는 명령어
git branch 브랜치이름
-> 원격에도 브랜치 추가하기
git push origin 브랜치이름
-> 로컬/ 원격에 각각 존재하고 있는 새로 만든 브랜치를 연동시켜주기
git branch - -set-upstream-to origin/브랜치이름
2. 로컬에서 브랜치 이동 명령어
git switch 브랜치이름
(추천 - 최신버전 명령어)
git checkout 브랜치이름
(얘는 다른 기능도 더 있음)
3. 브랜치를 한번에 생성 & 이동 (파일도 복사된다는 뜻)
git switch -c 브랜치이름 (create)
git checkout -b 브랜치이름 (branch)
(둘 다 같은 동작)
- 다른 브랜치에서 수정한거 왜 main에 합쳐야?
- 협업할때 최종 브랜치에 합쳐야 하니까
1. 브랜치 합치는 명령어
git switch 최종브랜치이름
(main으로 이동 먼저 하기)
git merge 합칠브랜치이름
(login 브랜치를 main에 합치기)
-> 사실 터미널에서 merge로 합치는 방법은 잘 안씀
2. Pull Request (PR) - 추천
- Pull Request는 왜 하는걸까?
-> 코드리뷰 및 병합하기 위해서
1) Pull Request 방법
github에서 Pull Request 들어가서
(base: dev) <- (compare : 내 기능브랜치)
PR 메시지 적고 merge 신청
(Add Rull 에서 -> 승인해야 merge할지 바로 merge 정할수 있음)
-> 로컬에서 git pull origin main 하면 로컬까지 최종 반영!
1. 🚨 pull request, github merge 문제점
- main branch === 배포용
(main에 합치면 자동으로 배포되는 자동화도 있음 ㄷㄷ)
-> 실 사용자가 바로 사용가능
문제1) 완벽 기능 개발해야 merge 가능
해결책1) 개발용 브랜치 하나더 만들기
(dev - develop 브랜치)
ex)
main 배포용
기능브랜치 기능 개발용
dev 테스트용
문제점 2) 그냥 합치면 오류 발생 확률 높음
ex) 변수 이름이 같을때
각 브랜치 파일에서는 오류 x
dev 머지 하니까 오류 0
해결책 2) 로컬에서 먼저 합쳐보는 테스트
무작정 dev에 올려서 합치지 말고,
내 컴퓨터에 일단 git pull origin dev 해서 확인 후 올려서 합치기
충돌 시 해결도 이렇게 해결
1. 초기 세팅
2. 팀장 : dev(혹은 develop) 브랜치 생성
git switch -c dev
git push origin dev
(github에도 반영)3. 팀장 : github에서 dev 브랜치를 default설정
(dev 브랜치꺼 clone 하니까 등의 이유)
4. 팀장 : 팀원들을 collaborator로 등록
5. 팀원 : git clone repository주소 .
6. 팀원 : 내 기능브랜치 생성
참고) git fetch origin
(원격의 브랜치들 가져오기)
합치기 전 내 로컬에서 충돌 해결 및 테스트
merge 하기
<추가 기능 개발>
내 로컬의 dev에도 변경사항 반영
git checkout dev
git pull origin dev
다음 기능 개발
참고)
로컬 브랜치 삭제
git branch -d 로컬브랜치이름
원격 브랜치 삭제
git push 원격저장소이름 -d 원격브랜치이름
(원격저장소이름 대부분 origin)
브랜치 목록 확인(로컬, 원격 전부)
git branch -a
원격 브랜치 목록 확인
git branch -r
(참고 : 모딩의 코딩블로그)
캠프 시작하기 전처럼 그냥 혼자 공부했다면 이렇게까지 공부하지 못했을거란 생각에 아주 아찔해진다. 내배캠을 시작한지 아직 그렇게까지 긴 시간이 지난것도 아닌데 벌써 영겁의 시간같고... 😂 ㅋㅋ 근데 정말 짧지만 굵게 배우고 있는것 같아 나름 다행스럽기도 하고 힘들기도 하다.
혼자 했다면 매일 이렇게 알고리즘 공부도 하지 않았을테고, 아니 알고리즘이 뭔지 알기는 했으려나... 프로그래머스 사이트 한번이라도 들어가는 봤으려나... 그리고 프로젝트도 혼자서만 간단히 만들어볼때는 진짜 그냥 html, css의 향연이었는데 캠프 하면서 js 공부도 하고 팀프로젝트도 해보고 바닐라 js 쓰려고 노력도 해보면서 실력이 많이 늘려고 움찔움찔 하는 것 같다. 이럴때 바짝 더 해서 레벨을 확 높여야겠다. 화이팅!!