주노 님의 블로그

20240709 사전캠프 7일차 TIL 본문

TIL

20240709 사전캠프 7일차 TIL

juno0432 2024. 7. 9. 19:00

사전캠프 7일차 내용 간단요약

  • 14:00 ~ 14:10 : 어제 TIL복습
  • 14:10 ~ 15:10 알고리즘 (24~27)
    equals, 동일성과 동등성, substring, replace, 정규식
  • 15:10 ~ 16:10 : 데일리 과제
    3주차 화요일 - SQL 연습문제 2번
    3주차 수요일 - SQL 연습문제 3번

    3주차 목요일 - SQL 연습문제 4번
    4주차 월요일 - SQL Lv.1 데이터 속 김서방 찾기
    4주차 화요일 - SQL Lv.2 날짜별 획득 포인트 확인하기
    4주차 수요일 - SQL Lv.3 데이터 속 김서방 찾기 - LEFT JOIN
    5주차 월요일 - SQL 연습문제 5번
  • 16:10 ~ 17:30 : 강의
    웹 개발 종합반 5주차 - 배포 및 파이썬 체험
  • 17:30 ~ 18:00 : TIL 정리

알고리즘(24~27)

더보기
  • equals
    두 문자열이 동일한지 비교한다.


  • substring
    문자열의 일부분을 추출한다.

    String str = "hello world";
    String sub1 = str.substring(0, 5);  // "hello"
    String sub2 = str.substring(6);     // "world"
    System.out.println(sub1); // hello
    System.out.println(sub2); // world

  • replace
    문자열의 특정 문자열을 다른 문자로 대체하는 메소드

    String str = "hello world";
    String replacedStr = str.replace("world", "java");
    System.out.println(replacedStr); // hello java


  • replaceAll
    문자열에서 정규 표현식과 일치하는 모든 부분을 대체한다.
    String str = "The rain in Spain stays mainly in the plain.";
    // 모든 'ain'을 'XYZ'로 대체
    String result = str.replaceAll("ain", "XYZ");
    System.out.println(result); // The rXYZ in SpXYZ stays mXYZly in the plXYZ.
            
    // 정규식으로 모든 공백을 대시(-)로 대체
    String result2 = str.replaceAll("\\s", "-");
    System.out.println(result2); // The-rain-in-Spain-stays-mainly-in-the-plain.

  • 정규식
    문자열에서 특정 패턴을 찾거나, 매칭시키거나, 치환할때 쓰는 표현식
    아래는 정규식을 쓰는 방식 사실 볼드만외워놔도 어느정도 알고리즘은 풀 수 있을듯.

    -는 범위 -가 없다면 ,으로 생각하면 편함

    [a-z] : 소문자 a~z까지의 문자열
    [A-Z] : 대문자 A~Z까지의 문자열
    [0-9] : 숫자 0~9까지의 문자열
    [aeiou] : 소문자 a,e,i,o,u중 하나와 일치

    . : 임의의 문자
    a.b라면 acb aab a1b등

    \d 임의의 단일숫자

    \w 임의의 단일단어문자

    \s 임의의 단일 공백 문자

    ^는 문자열의 시작을

    $는 문자열의 끝을

    * : 0회 이상의 반복

    + : 1회 이상의 반복

    ? : 0또는 1회 반복

    {n,} 최소 n회 이상 반복

    {n,m} 최소n회 최대 m회 반복

    [^0-9\s]+a+z{3,6}
    예를들면 숫자와 공백을 제외한 문자
    a가 하나이상
    z는 3~6회 반복 이라는뜻이다.

데일리 과제

더보기

5. products 테이블에서 제품 이름(product_name)과 가격(price)만을 선택하는 쿼리를 작성해주세요.
SELECT product_name, PRICE
FROM products

6. products 테이블에서 제품 이름에 '프로'가 포함된 모든 제품을 선택하는 쿼리를 작성해주세요.
SELECT *
FROM products
WHERE PRODUCT_NAME LIKE "%프로%"

7. products 테이블에서 제품 이름이 '갤'로 시작하는 모든 제품을 선택하는 쿼리를 작성해주세요.
SELECT *
FROM products
WHERE PRODUCT_NAME LIKE "갤%"

8. products 테이블에서 모든 제품을 구매하기 위해 필요한 돈을 계산하는 쿼리를 작성해주세요.
SELECT SUM(PRICE)
FROM products

9. orders 테이블에서 주문 수량(amount)이 2개 이상인 주문을 진행한 소비자의 ID(customer_id)만 선택하는 쿼리를 작성해주세요!
SELECT CUSTOMER_ID
FROM ORDERS
WHERE AMOUNT >= 2

10. orders 테이블에서 2023년 11월 2일 이후에 주문된 주문 수량(amount)이 2개 이상인 주문을 선택하는 쿼리를 작성해주세요!
SELECT *
FROM ORDERS
WHERE ORDER_DATE >= '2023-11-2'

11. orders 테이블에서 주문 수량이 3개 미만이면서 배송비(shipping_fee)가 15000원보다 비싼 주문을 선택하는 쿼리를 작성해주세요!
SELECT *
FROM ORDERS
WHERE SHIPPING_FEE >15000 AND AMOUNT <3

12. orders 테이블에서 배송비가 높은 금액 순으로 정렬하는 쿼리를 작성해주세요!
SELECT *
FROM ORDERS
ORDER BY SHIPPING_FEE DESC

13. sparta_students 테이블에서 모든 학생의 이름(name)과 트랙(track)을 선택하는 쿼리를 작성해주세요!
SELECT NAME, TRACK
FROM SPARTA_STUDENTS

14. sparta_students 테이블에서 Unity 트랙 소속이 아닌 학생들을 선택하는 쿼리를 작성해주세요!
SELECT *
FROM SPARTA_STUDENTS
WHERE TRACK != 'UNITY'

15. sparta_students 테이블에서 입학년도(enrollment_year)가 2021년인 학생과 2023년인 학생을 선택하는 쿼리를 작성해주세요!
SELECT *
FROM SPARTA_STUDENTS
WHERE ENROLLMENT_YEAR IN (2021, 2023)

16. sparta_students 테이블에서 Node.js 트랙 소속이고 학점이 ‘A’인 학생의 입학년도를 선택하는 쿼리를 작성해주세요!
SELECT ENROLLMENT_YEAR
FROM SPARTA_STUDENTS
WHERE TRACK = 'NODE.JS' AND GRADE = 'A'

[SQL 과제] Lv1. 데이터 속 김서방 찾기
SELECT COUNT(user_id)
FROM users u 
WHERE NAME LIKE '김%'

문제: 다음과 같은 결과테이블을 만들어봅시다.
created_a
average_points: 유저가 획득한 날짜별 평균 포인트(int), 반올림 필수
SELECT DATE(CREATED_AT), ROUND(AVG(POINT)) "AVERAGE_POINTS"
FROM point_users
GROUP BY DATE(created_at)

문제: 다음과 같은 결과 테이블을 만들어봅시다.
user_id: 익명화된 유저들의 아이디
email: 유저들의 이메일
point: 유저가 획득한 포인트
users 테이블에는 있지만 point_users에는 없는 user는 포인트가 없으므로 0 으로 처리
포인트 기준으로 내림차순 정렬

SELECT U.user_id, U.email, IFNULL(PU.POINT,0) AS POINT
FROM users U LEFT JOIN point_users PU ON U.user_id = PU.user_id 
ORDER BY PU.POINT DESC

17. team_projects 테이블에서 AWS 예산(aws_cost)이 40000 이상 들어간 프로젝트들의 이름을 선택하는 쿼리를 작성해주세요!
SELECT *
FROM TEAM_PROJECTS
WHERE AWS_COST>=40000

18. team_projects 테이블에서 2022년에 시작된 프로젝트를 선택하는 쿼리를 작성해주세요! 단, start_date < ‘2023-01-01’ 조건을 사용하지 말고 쿼리를 작성해주세요!
SELECT *
FROM TEAM_PROJECTS
WHERE START_DATE LIKE '2022%'

19. team_projects 테이블에서 현재 진행중인 프로젝트를 선택하는 쿼리를 작성해주세요. 단, 지금 시점의 날짜를 하드코딩해서 쿼리하지 말아주세요!
SELECT *
FROM TEAM_PROJECTS
WHERE START_DATE < curdate() AND END_DATE > curdate()

20. team_projects 테이블에서 각 프로젝트의 지속 기간을 일 수로 계산하는 쿼리를 작성해주세요!
SELECT *, END_DATE-START_DATE+1 지속시간
FROM TEAM_PROJECTS


(강의 웹 개발 종합반 5주차) - 배포 및 파이썬 체험

더보기
  • 배포
    개발한 서비스를 실제 사용자에게 제공하는 과정.
  • URL
    인터넷에서 특정 리소스의 위치를 나타내는 주소
    구성요소 : 프로토콜://도메인/경로
    프로토콜 : 웹 브라우저와 웹 서버 간의 통신 방식을 지정 (예 HTTP, HTTPS)
    도메인 : 인터넷 상의 고유한 식별자로 사용되는 웹 사이트의 주소
    경로 : 웹 사이트 내의 특정 페이지나 파일의 위치

    예를들어 https://spartacodingclub.kr/catalog
    프로토콜 : HTTPS
    도메인 : spartacodingclub.kr
    경로 : catalog

  • 깃허브
    코드 관리 및 협업 툴
  • 깃허브 페이지
    깃허브에서 제공하는 정적 웹 사이트를 무료로 호스팅 할 수 있는 서비스
    1. 저장소 생성하기
    2. 작성한 HTML 업로드
    3. SETTINGS > PAGES > Branch Name을 NONE에서 MAIN으로 변경하여 배포

  • 깃허브 수정하기
    1. EDIT FILE으로 직접 수정하기.
    2. 파일 삭제후, 수정한 파일 업로드하기.

  • 보안 주의
    깃허브에 커밋할때는 보안 에 주의해야 하며, 비밀번호, 개인키 API키 등을 노출하지 않도록 해야함.

  • 파이어베이스의 한계점 : 백엔드 인프라를 제공해주지만, 세세한 커스터마이징이 필요할때는 한계가 있음.

  • 스크래핑 : 인터넷에서 필요한 자료를 긁어오기 위해 웹 페이지의 구조와 내용을 읽어오는것

'TIL' 카테고리의 다른 글

20240711 사전캠프 9일차 TIL  (0) 2024.07.11
20240710 사전캠프 8일차 TIL  (0) 2024.07.10
20240708 사전캠프 6일차 TIL  (1) 2024.07.08
20240705 사전캠프 5일차 TIL  (1) 2024.07.05
20240704 사전캠프 4일차 TIL  (1) 2024.07.04