목록WHAT I LEARN/TIL (78)
Nonamed Develog
새로 알게 된 점은 무엇인가?프로그래밍 기본컴파일러(compiler): 고급 언어로 작성된 소스 코드를 저급 언어(기계어)로 번역하는 프로그램- 코드 실행 전, 컴파일 타임에 소스 코드 전체를 한 번에 기계어로 변환 후 실행한다.- 실행 파일을 생성한다.- 컴파일 단계와 실행 단계가 분리되어 있다.- 컴파일은 한번만 수행한다.- 컴파일과 실행단계가 분리되어 있어, 실행 시에는 실행만 하면 되므로 코드 실행 속도가 빠르다.- 런타임: 컴파일 과정을 마친 컴퓨터 프로그램이 실행되고 있는 환경 또는 동작 시간이다.- C, C++, C#, JAVA인터프리터(interpreter): 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램- 코드가 실행 단계인 런타임에 코드 한 줄씩 중간 코드인 바이트코드로 ..
어떤 문제가 있었나?스쿼드 세션에서 첫 알고리즘 문제를 풀지 못했다. 행렬 덧셈 문제였는데 빨리 풀어야 한다는 생각에 슈도 코드 작성도 하지 않고 무작정 vscode부터 실행했고, 행렬을 직접 구현하려니 너무 막막했다. 알고리즘 강의를 많이 못 들었어도 코드카타 열심히 풀고 개념 정리도 했는데 안 풀리니 조금은 좌절했다.무엇을 시도했나?세션에서 풀이 내용을 집중해서 보고 스스로 다시 풀어봐야겠단 생각이 들었다. 풀이를 보고 다시 푸는 것임에도 불구하고 풀이가 어려웠다. 행렬에 대해서 다시 공부하고, 문제를 정확히 이해한 다음, 슈도 코드를 작성해 봤다. 잘 안 써본 map, join, spit()을 써보려고 노력해 봤다.어떻게 해결됐는가?세션을 통해서 이미 로직을 알고 있는 상태라 천천히 코드를 작성해 ..
어떤 문제가 있었나?자료구조 알고리즘 강의가 생각보다 어려워 스쿼드 세션을 잘 보내면 어렵지 않겠다는 생각은 완전히 오산이었다. 파이썬 세션도 내가 어느정도 알고 있었기에 따라갈 수 있었다는 것을 망각했다. 용어를 모르니 이해하지 못한 부분이 있었지만 초반이라 전반적으로 세션을 따라갈 수 있었다. 하지만 앞으로가 걱정이 되었다.무엇을 시도했나?세션에서 알고리즘 학습을 위한 접근법을 제시해 주셨는데, 기존 공부했던 방식인 Step by step이 알고리즘에선 효율적인 학습법이 아닐 수도 있다고 하셨다. 전체적으로 여러번 보는 것이 중요하고, 몰라도 한 번 훑는게 좋다고 이해했다. 그동안 Stack과 Queue 구현이 되지 않아 강의 수강이 멈춰 있었는데, 일단 무지성으로 강의 수강을 진행했다. 또한 추천하..
새로 알게 된 점은 무엇인가?객체 지향 프로그래밍의 4가지 특징추상화상속다형성캡슐화아래에서 자세하게 알아보자.1. 추상화: 객체의 공통적인 속성과 기능을 추출하여 정의하는 것이다.class Person: def run(self): print("Person is running") def walk(self): print("Person is walking")가장 본질적이고 공통적인 부분만을 추출하여 표현할 수 있다.달리기, 걷기는 각각을 사람이 하는 행위이기 때문에 Person이라 정의할 수 있다.함수, 변수 클래스 모두 추상화이다. 2. 상속두 클래스 사이 부모-자식 관계를 정립하는 것이다.클래스는 상속이 가능하다. cf) 모든 파이썬 클래스는 Object를 상속..
새로 알게 된 점은 무엇인가?절차 지향 프로그래밍 vs 객체 지향 프로그래밍- 절차 지향 프로그래밍프로그램을 여러 순서대로 진행되는 절차(함수나 명령)들로 구성된다.기능 중심이고 순서가 존재하기 때문에 빠른 속도를 가지고 있다.하지만 프로그램이 커지고 데이터가 많아질수록 너무 복잡해질 수 있다.- 객체 지향 프로그래밍절차 지향 프로그래밍으로는 생산성이 낮아지므로 데이터 중심으로 프로그래밍 개편하나의 프로그램을 여러 개의 독립된 객체들과 상호작용현실 세계를 프로그램 설계에 반영(추상화)설계 시 정밀하게 다양한 객체 간 상호 작용 구조를 만들어야 하기 때문에 시간이 필요하다.실행속도가 절차 지향 보다 상대적으로 느리긴 하지만 처리구조가 비슷해 빠른 편이라고 할 수 있다.클래스와 객체속성(data, 변수)과 ..
새로 알게 된 점은 무엇인가?피보나치 수 구하기# 1. 코드 작성 전 슈도 코드로 구상def fibo(n): # 2. 골격 코드 작성 if n == 1: # 4. 종료 조건 작성 return 1 # 5. 종료 조건은 명확하지 않은 경우가 있으므로 elif n == 2: # 재귀 논리를 생각하는 연습하기 return 1 else: return fibo(n-1) + fibo(n-2) # 3. 구상한 재귀 논리 작성 n = int(input())print(fibo(n)) 멤버십 연산자(in, not in): iterable(반복가능한) 시퀀스에서 True/False 판별value(확인할 값) in sequence(확인할 시퀀스): 특정 ..
오늘 세션에서도 파이썬 문법을 다뤘는데 정확히 몰랐던 부분에 대해서 정리하고자 한다. 새로 알게 된 점은 무엇인가?모듈과 패키지- 모듈: 프로그램에서 특정 기능을 하는 파이썬 파일(.py)import moduleimport my_math # my_math 모듈을 가지고 와서my_math.add # 모듈.메소드 이용from my_math import add # 모듈과 메소드 하나를 가져옴(가져온 메소드만 이용가능)from my_math import * # 모듈과 메소드 전체를 가져옴- 패키지: 모듈을 모아두고 관리하는 상위 폴더 또는 디렉토리from package import modulefrom special.my_math import addfrom special.my_math import *from..
오늘은 어제에 이어서 스쿼드 세션에서 다룬 파이썬 문법을 정리하고자 한다. 잘 몰라서 외면했었던 내용이라 잘 정리하고 넘어가기 좋은 기회라 생각했다.새로 알게 된 점은 무엇인가?함수- 전역변수(Global variable): Global scope에 위치한 변수는 바뀌지 않는다면 따로 지정할 필요가 없지만, 바뀌게 된다면 local scope에서도 명확하게 지정해야 한다.cf) nonlocal: 지역변수가 아님을 선언. 함수 바로 한 단계 바깥쪽에 위치한 변수를 명시할 수 있다.a = 0b = 1def func01(): global a # a += 10처럼 변경되므로 global a를 명시해 줌 a += 10 def func01(): print(a)''' 하지만 현직에서 global은 사용하..