웹 프론트엔드의 이해에 앞서..
웹 서비스는 어떻게 제공될까?
👉 식당을 예로 들어볼 때,
서버들이(웨이터) 기본 세팅을 하고, 손님이 주문(요청)을 하면, 제공(요청에 대한 응답)을 해준다.
이게 바로 웹 서비스가 작동되는 원리와 같다.
@app.route('/')
※ GET과 POST의 차이점
- GET은 전달하는 파라미터(매개변수)를 노출한다.
- POST는 전달하는 파라미터(매개변수)를 노출하지 않는다.
- 파라미터란, 예를 들어 로그인 시 아이디와 패스워드를 가지고 요청할 때 이 아이디 값과 패스워드 값(서버로 전달되는 값)을 말함.
👉 참고 개념
- 브라우저 : 사용자가 서버에 요청하기 위한 도구
- 클라이언트 : 사용자와 브라우저를 묶어서 말한다.
- (웹) 서버 : 서버가 있는 프로그램/컴퓨터!
- 서버가 돌아가는 컴퓨터는 24시간 돌아가야 되는데, 개인의 컴퓨터를 24시간 구동하기란 불가능하다.
우리가 서버가 있는 컴퓨터를 다 살 수 없으니, 개발을 할 때는 로컬 환경을 이용하거나(로컬 개발환경) 서버가 돌아가는 컴퓨터를 모아놓은 환경을 빌려서 사용할 수 있다.- 로컬개발환경 : app.py 파일을 실행하여 브라우저에 접속하며, 127.0.0.1의 IP 주소, 포트 넘버는 기본 5000으로 설정한다.
- IP : 인터넷에 연결되어 있는 장치들의 고유 식별 주소
- URL : 해당 서버의 주소, 하위 디렉토리 위치까지 표시 한다.
- 포트(PORT) : IP에서 프로세스 구분을 위해 사용하는 번호, 즉 IP주소에 진입할 수 있도록 정해진 통로.
예 ) 한국에 들어올 수 있는 항구가 인천, 부산 등 몇 개만 있을 경우, 이 항구의 개념을 서버에서는 ‘숫자 번호’로 쓰는 것이다.
항구를 구분하기 위한 번호 중 하나가 (localhost:) 5000인 것.
- 도메인과 URL의 차이 : 도메인은 해당 서버의 주소, URL은 서버주소 + 하위 위치까지 표시
- IP와 도메인, URL의 차이 : IP는 지도상에서 내 위치가 경도, 위도로 표시되는 것과 같고, 도메인(,URL)은 정해진 주소 표기법에 따라 '서울시OO구.. ' 식으로 표기하는 것과 같다고 생각한다.
웹 서비스의 제공 과정인 마지막 단계에서 서버가 응답값으로 주는 것 중 하나인 랜더링
공간 복잡도 보다 시간 복잡도에 신경 쓰는 게 중요하다!
점근 표기법
: 알고리즘의 성능을 수학적으로 표기하는 방법. ‘효율성’을 평가하는 방법이다.
알고리즘의 성능은 입력 값에 따라 달라질 수 있다.
알고리즘을 세울 때는 최악의 경우를 대비해야 되기 때문에, 빅오 표기법의 시간 복잡도를 사용해 분석한다고 생각하라.
✍️ 곱하기 or 더하기
Q. 문제 설명
❓ Q. 다음과 같이 0 혹은 양의 정수로만 이루어진 배열이 있을 때, 왼쪽부터 오른쪽으로 하나씩 모든 숫자를 확인하며 숫자 사이에 '✕' 혹은 '+' 연산자를 넣어 결과적으로 가장 큰 수를 구하는 프로그램을 작성하시오. input = [0, 3, 5, 6, 1, 2, 4] 단, '+' 보다 '✕' 를 먼저 계산하는 일반적인 방식과는 달리, 모든 연산은 왼쪽에서 순서대로 이루어진다. - 파이썬 풀이 def find_max_plus_or_multiply(array):
# 이 부분을 채워보세요!
sum = 0
for num in array:
if num <= 1 or sum <= 1:
sum += num
else:
sum *= num
return sum
result = find_max_plus_or_multiply(input)
print(result)
const solution2 = function(array) {
let sum = 0;
array.map((number) => number <= 1 || sum <= 1 ? sum += number : sum *= number)
return sum;
}
👉 시간 복잡도 : 1차 반복문(for)이 나왔으므로, 시간 복잡도를 생각했을 때 O(N)만큼
즉, 배열의 길이만큼 실행 시간이 걸린다고 생각하면 된다.