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

+ Recent posts