Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

Nonamed Develog

[TIL] AI 웹 개발 7기 사전 캠프 5-2 본문

WHAT I LEARN/TIL

[TIL] AI 웹 개발 7기 사전 캠프 5-2

노네임드개발자 2024. 6. 18. 18:08

일일 알고리즘/SQL 코드카타

알고리즘30. 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다.

 

제한사항

- s는 길이가 1 이상, 100이하인 스트링입니다.

def solution(s):
    if len(s) % 2 != 0:
        answer = s[len(s)//2]
    elif len(s) % 2 == 0:
        answer = s[(len(s)//2)-1:(len(s)//2)+1]
    return answer

가운데 인덱스를 구하는 코드만 작성하면 되는 문제였다. 홀수 일 때 2로 나온 몫이 가운데 인덱스이고, 짝수일때는 [몫-1:몫+1] 인덱스로 풀었다. 아직 인덱스에 대한 이해가 많이 부족했다. 특히 짝수일 때 [몫-1:몫]으로 풀다보니 문자 하나만 출력되어서 당황스러웠다. END에 해당하는 인덱스를 생각하자.

 

SQL30. 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 

SELECT car_type,
       count(*) CARS
FROM car_rental_company_car
WHERE options LIKE '%시트%' #WHERE option IN으로 풀려다가 실패
GROUP BY car_type
ORDER BY car_type
#where OPTIONS IN ('통풍시트', '열선시트', '가죽시트')가 오답인 이유
위 코드는 옵션으로 통풍시트만 있거나, 열선시트만 있거나, 가죽시트만 있어야 그 결과값이 나옵니다.
즉, 차량 옵션으로 '통풍시트', '네비게이션'이 있을때, 비록 '통풍시트'가 있지만 네비게이션 때문에 조회되지않습니다.
=> 'IN' 연산자가 포함된 'WHERE' 절이 SQL에서 작동하는 방식 때문
=> `WHERE OPTIONS IN ('통풍 시트', '열선 시트', '가죽 시트')'를 사용하면 'OPTIONS' 열이
지정된 값('환기 시트', '열선 시트') 중 하나와 정확히 일치하는 행을 필터링합니다.
좌석'또는 '가죽 좌석'. 즉, 행에 이 세 가지 옵션 외에 다른 옵션이 포함되어 있으면 해당 행은 결과에 포함되지 않습니다

 

웹의 동작 개념

브라우저는 1)요청을 보내고 2) 받은 HTML 파일을 그려주는 것이다.

ex) 웹 페이지는 서버에 미리 준비한 것을 받아서 브라우저가 그려주는 것

 

서버가 만은 API라는 창구에 미리 정해진 약속대로 "요청"을 보내는 것이다.

ex) 주소창에 주소를 입력

https://naver.com/

naver.com 이라는 서버에 있는 "/"라는 주소 창구에 요청을 보낸 것→네이버 홈에 해당하는 HTML 파일 보냄

 

즉, 우리가 보는 브라우저는 주소를 통해 API로 요청을 보내고, API는 요청에 맞는 HTML 파일을 보낸 다음, 브라우저는 받은 HTML 파일을 화면에 그려준다.

 

그러나 항상 HTML 파일로만 보내주는 것은 아니다. 오히려 데이터만 내려줄 때가 더 많다. HTML 파일의 코드도 결국 '데이터'라 할 수 있다. 

ex) 공연 티켓을 예매할 때 좌석이 실시간으로 매진될 때마다 보던 페이지가 계속 새로고침 된다면?

예약하기 매우 어려울 것이다. 따라서 이 떄는 데이터만 받아서 갈아끼우는 식으로 작동시킨다.

 

다시 정리하면 웹 서비스에서 API로 요청을 보내면 서버의 데이터베이스에서 데이터를 돌려주고 브라우저에서 Javascript라는 언어를 이용하여 새로운 데이터베이스로 바꿔준다.(Javascript는 추후에 배울 예정)