TIL_221109 ✅ Algorithm_Python

정윤숙·2022년 11월 9일
0

TIL

목록 보기
10/192

내일배움캠프 4기 스파르타코딩 React B반


📒

오늘의 공부

1. Algorithm_Python_1주차

  • 최빈값 찾기
    • str.isalpha() 해당 문자열이 알파벳인지 확인할 수 있는 파이썬 내장 함수
    • ord() 함수로 아스키 값 받기
    • chr() 함수로 아스키 값을 문자로 변환
  • 시간 복잡도 / 공간 복잡도
    • 대부분 알고리즘의 성능은 공간에 의해서 결정되지 않기 때문에 시간 복잡도를 더 줄이려는 고민 필요.
    • 공간을 희생해서라도 시간 복잡도를 간결하게!
  • 점근 표기법
    • 입력 값의 분포에 따라 알고리즘 성능이 변화

⭐알고리즘은 전부 빅오 표기법 O(N) 의 시간 복잡도를 분석

  • range() 함수: 특정 구간의 숫자의 범위를 만든다.
    • range(A) 0부터 A-1 까지의 정수 범위 반환
    • range(A,B,C) A부터 C 간격으로 B-1 까지의 정수 범위 반환
    • reversed(range(A)) 범위를 역순으로 바꿈

  • 너무 어려운데 매니저님이 이번 강의는 알고리즘에 대한 이해 정도로 하고 Python보다 Javascript Algorithm이 더 쉬우니 JS위주로 공부하라고 하셨다.
    개발은 우상향이니 시간 투자 많이 해서 꾸준히 하면 분명 도움이 될 거라고 해 주셔서 마음이 좀 편해졌다.
    • 프로그래머스 Javascript 0단계부터 풀면서 재밌고 쉽게 접근하기!
    • 백준허브: Javascript로 백준 풀기 구글링 필요!
      -> 푼 문제 git hub 연동 가능! (매니저님도움 요청)

2. Algorithm 특강

  • 코딩테스트

    • 자신있는 언어로 코딩테스트를 본다.
    • Python을 추천하는 이유: 코드가 짧다(숏코딩) = 코테 시간이 줄어든다 = 가산점도 받을 수 있다!
    • 라이브러리 못 쓰게 하는 경우도 있어 기본 테크닉을 잘 공부하기! for문, if문은 확실하게!
  • 프로그램의 본질

    • 주어진 문제를 얼마나 쉽고 빠르고 깔끔하게 해결하는가.
    • 알고리즘에 강점이 있다면 문제 해결에 더 도움이 된다
  • 이해를 위해 코딩을 하기 전 한국어로 풀어 써보기!

  • 애매하게 이해가 된다면 이해 될 때까지 파고들기

  • 따로 더 찾아본 것

    • List Comprehension: for문 대신 간결하게 코드를 칠 수 있다.
    • for-else문: for문이 break등으로 중간에 빠져나오지 않고 끝까지 실행됐을 때 else문이 실행된다.

3.프로그래머스

  • Day1 <사칙연산>

    • 문제 풀 때마다 언어 Javascript로 바꿔주기!
      (Python을 선택해서 푸는 날도 오기를..!)
    • 두 수의 합: 한 번에 성공!! 너무 행복ㅋㅋㅋ 근데 다른 사람 풀이를 보니 훨씬 간단하게 풀 수도 있었다! 주어진 코드 다 지우고 내가 처음부터 새로 짜도 되는 거였네!!
      const 이용해서 한 줄로 풀기도 가능하다!
      -> const solution = (num1, num2) => num1 + num2
    • 몫 구하기: Math.floor() 소수점 버리기!
  • 매니저님 말씀대로 프로그래머스로 푸니까 재밌고 알고리즘으로 복잡했던 머리가 좀 비워져서 좋다!!


Git 문제해결

  • 어제 이전 팀원 분의 git 문제를 오늘 이어서 다시 살펴봤다.
  • 문제는 1폴더 안의 2,3 폴더 중 2폴더 안의 파일만 git에 올라가지 않고 2폴더 껍데기만 올라가는 것
    • repo랑 git을 연결하면 .git 폴더가 생긴다.
    • 2폴더를 이전 계정 repo랑 연결한 적이 있어 .git 폴더가 생겨 있었다.
    • .git 폴더를 삭제 후 new repo에 1폴더를 push하니 하위 2,3 폴더와 그 안의 파일까지 잘 올라갔다.
  • 처음 repo를 만들 때 생기는 branch는 보통 main / master
    • 두 브랜치 모두 올릴 수 없다는 오류가 뜨면 보통 그 브랜치는 이미 누가 차지하고 있던 거여서
      git checkout -b name 으로 새로운 브랜치를 만들어 push하면 잘 올라간다.
  • git 총 정리
    • git init
    • git add . 혹은 git status로 파일 확인 후
      올리고 싶은 파일(index.html)만
      -> git add index.html
    • git commit -m"description"
    • git remote add origin url(repo http)
    • git push origin main/master
    • git remote -v 현재 연결된 repo 확인
    • git remote remove origin repo와 연결 제거

왜 이렇게 했을까?

  • 한 분이 알고리즘에서 알파벳을 if not으로 필터링 한 것에 대해 왜 if로만 하지 않는지 의문을 가졌고 배운 내용을 공유해주었다.
    • 필터링은 불순물을 거르는 것으로 알파벳이 아닌 것들을 거르기 위해 if not을 쓴 것이다.
    • 진도 나가는 것, 어려운 내용이라 이해하고 얼른 넘어가고 싶은 것에 급급해하지 말고 항상 '왜 이렇게 했을까? ' 를 생각하자
profile
프론트엔드 개발자

0개의 댓글