2주차는 알고리즘으로 진행이 됐다. 이때는 뭔가 JS 문제만 풀어서 현타를 느낀 칭구들도 많았던걸로 기억하는데 난 재미가 쏠쏠했단 말이지 당시 노션에 정리했던 TIL 잠깐 봤는데 거의 12시까지 공부하다가 자기 직전에 안돼 한줄이라도 써야돼... 이러면서 써서 그런지 블로그에 올리기 창피한 수준.. 이긴 한데 그냥 올린란다~
22/7/15(금)
TIL
알고리즘 문제를 처음 풀었는데 생각보다 재미가 쏠쏠하네..
문제의 정답을 찾아가는 과정이 일단 내가 알고있는 내용에서 해결 가능한가 고민해보고 그렇게 해결이 안되면, 어떤 메서드를 사용할까 고민해보고,
그다음 그 메서드를 구글에 검색해보고 → 얻은 메서드를 통해 문제에 다시 접근해보는 것이 얻어가는게 많은것 같다. 그러고도 안되면 바로 구글링해야지모.
- 자주 나오는 메서드는 공부해보자! (매우 편리함)
- for 문이나 if 문 중간중간 변수 사용할때 선언 잘하자
- 안쪽에서 선언하고 바깥쪽에서 선언할때 결과값이 완전히 다르게 나옴(중요)
var absol= [1, 2, 3, 4, 5]
var signs= [true, false, true]
function q1() {
return absol.reduce((acc, val, i) =>
acc + (val * (signs[i] ? 1 : -1)), 0);
}
(와 이때는 var를 썼네.. 심지어 알고리즘 내내 var만 썼던거같음)
GIT
급한대로 branch 생성이랑 원격 레퍼지토리 copy 하는거, pull & push 부터 속성으로 배웠다~ 1주차처럼 팀원들에게 고통을 줄 수는 없워… 기본부터 하자!
1) 오늘 배운거 요약!
$git clone 원격저장주소
$git add . $git commit -m ‘팀원1 첫 commit~’
$git pull (바로 push 하면 충돌나서 꼭 pull 부터!)
$git push
2) 아~주 소규모 프로젝트라면 이것만 해도 훌륭하지만 실전은 녹록치 않은법..
내일은 branch 를 접목해보자!
알고리즘
1. ‘*’로 사각형 만들기 (https://school.programmers.co.kr/learn/courses/30/lessons/12969)
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
const n = data.split(" ");
const a = Number(n[0]), b = Number(n[1]);
let star = '*'.repeat(a)
for (i = 0; i < b; i++) {
console.log(star)
}
});
2. 홀수 짝수 출력 함수 만들기 (https://school.programmers.co.kr/learn/courses/30/lessons/12937)
function solution(num) {
if (num % 2 == 0) {
var answer = 'Even'
} else {
var answer = 'Odd'
}
return answer;
}
3. 가운데 글자 가져오기 (https://school.programmers.co.kr/learn/courses/30/lessons/12903)
function solution(s) {
let answer = '';
if (s.length % 2 == 1) {
q1 = s.length / 2
answer = s.substring(q1, q1 + 1)
} else {
q1 = s.length / 2 - 1
answer = s.substring(q1, q1 + 2)
}
return answer;
}
// substring(가져올 str의 시작번호(포함), 끝번호(불포함))
유사품 substr() / slice() 도 궁금하면 알아보자.
4. 두 정수 사이의 합 구하기 (https://school.programmers.co.kr/learn/courses/30/lessons/12912)
// *조건 a 와 b 는 대소관계가 정해져 있지않다, a=b 이면 아무거나 출력
function solution(a, b) {
let answer = 0;
if (a < b) {
for (i = a; i < b + 1; i++) {
answer = answer + i
}
} else if (a > b) {
for (i = b; i < a + 1; i++) {
answer = answer + i
}
} else {
answer = a
}
return answer;
}
5. 문자열을 정수로 바꾸기 (https://school.programmers.co.kr/learn/courses/30/lessons/12925)
function solution(s) {
var answer = Number(s)
return answer;
}
6. 배열에 없는 숫자 더하기(https://school.programmers.co.kr/learn/courses/30/lessons/86051)
function solution(numbers) {
var answer = 0;
for (i = 0; i < 10; i++) {
if (!numbers.includes(i)) {
answer = answer + i
}
}
return answer;
}
//생각보다 어려웠음! 모르는 문제는 바로 정답을 찾기보다 메서드를 중심으로 검색해보는게 훨씬 좋아보인다. [abc].includes(a) -> True;
배열에서 a가 있는지 여부를 bool 값으로 뱉어줌!
7. 절대값 양수음수(음양) 더하기(https://school.programmers.co.kr/learn/courses/30/lessons/76501)
function solution(absolutes, signs) {
let answer = 0;
absolutes.map((value, i) => {
if (signs[i]) {
answer = answer + value
} else {
answer = answer - value
}
})
return answer;
} // 이 문제를 풀면서 깨달았다.. 배열의 합은 reduce를 써야하는구나..!
8. 배열 평균 구하기(https://school.programmers.co.kr/learn/courses/30/lessons/12944)
function solution(arr) {
var answer = arr.reduce((ac, val, i) => ac + val / arr.length, 0);
return answer
} // reduce를 주워다가 써봤다! 효과는 굉장했다!
'항해99' 카테고리의 다른 글
2주차 알고리즘 (0) | 2022.11.19 |
---|---|
2주차 알고리즘(2일차) (0) | 2022.11.19 |
실전 프로젝트 트러블슈팅(SSE) (0) | 2022.10.31 |
1주차 프로젝트 (0) | 2022.07.28 |
스파르타 코딩클럽 <웹개발 종합반> 회고 (0) | 2022.04.13 |