2024. 4. 14. 20:19ㆍ회고/TIL(매일)
✏️도전한 점
1. 어제 지도학습, 비지도학습 군집화 실습부분 복습
2. 오늘 streamlit 실습 후, 배포 과정 진행 완료
3. 백준 알고리즘 자료구조(큐) 문제 풀고 라이브러리 학습
01 지도/비지도 학습 노트필기
추후 첨부
02 Streamlit 실습 후 배포
Python 라이브러리 : Streamlit 실습
01 streamlit 실행 여부 확인 02 streamlit 실행 → 코드 변경, 저장 후 새로고침 반복 1. 해당 코드를 터미널에 입력하면 웹 어플리케이션이 기본 브라우저에 뜬다. 2. df 만 입력해도 동일하게 띄울 수
specialda.tistory.com
03 알고리즘 deque 학습
1. 코딩테스트 스터디에서 내가 문제를 낼 차례가 왔다.
3. 아무리 문제를 풀어도 시간 초과의 벽에서 막혔다.
n = int(input())
result = [i for i in range(1, n+1)]
while len(result) > 1:
result.pop(0)
result.append(result.pop(0))
print(result[0])
- result.pop()은 즉시 해당 리스트에서 데이터가 제거된다.
- 두 번째 제거는 변수 명명하지 않고 바로 append뒤에 써도 된다.
- while에 조건을 줄 때도 저렇게 쓰면 깔끔하다.
- 문제 이유: pop() 함수를 사용하여 리스트의 요소를 삭제할 때마다 모든 요소들을 이동해야 하므로 시간이 많이 소요된다. 특히 리스트의 첫 번째 요소를 삭제할 때는 모든 요소들을 한 칸씩 앞으로 이동시켜야 하므로 이 과정이 반복될수록 시간이 더 많이 걸린다.
4. 내가 만들어낸 로직에 간단히 덱(deque)를 입히는 방법을 배웠다.
from collections import deque
n = int(input())
result = deque(range(1, n+1))
while len(result) > 1:
result.popleft()
result.append(result.popleft())
print(result[0])
- 파이썬의 deque(덱) 모듈을 사용하여 1부터 n까지의 숫자로 이루어진 deque 자료구조를 생성한다.
- deque는 양 끝에서의 빠른 삽입과 삭제를 지원하는 자료구조이다.
- 여기서는 1부터 n까지의 숫자가 순서대로 deque에 저장된다.
- popleft()를 이용해서 "첫"번째에 해당하는 데이터를 빠르게 제거할 수 있다.
04 SQL 쿼리테스트 스터디
select if(g.Grade < 8, 'NULL', s.Name), g.Grade, s.Marks
from Students s, Grades g
where s.Marks between g.Min_Mark and g.Max_Mark
order by g.Grade desc, case when g.Grade >= 8 then s.Name when g.grade <8 then s.Marks end asc;
- 고민했던 점은?
마지막으로 등급이 8보다 낮으면 이름으로 "NULL"을 사용하고 등급별로 내림차순으로 나열합니다. 동일한 등급(1-7)을 가진 학생이 두 명 이상 배정된 경우 해당 학생의 점수를 기준으로 오름차순으로 정렬합니다.
위와 같은 정렬 조건일 때 사실 저부분을 고려하지 않아도 테스트는 합격되었다.
하지만 고민해보면 좋을 문제여서 order by 부분에 case when을 사용하게 됐다.
'회고 > TIL(매일)' 카테고리의 다른 글
TIL 118일차 : Linux htop, gcloud auth login, 특성컬럼값 검수 (0) | 2024.04.16 |
---|---|
TIL 117일차 : 데이터 축소(선택과 집중), streamlit, where+between (0) | 2024.04.15 |
TIL 115일차 (0) | 2024.04.12 |
TIL 114일차 : 프롬프트 완성 -> 거의 다 왔다. (0) | 2024.04.11 |
TIL 113차 : 사전투표해서 쉬는 날도 프로젝트 (0) | 2024.04.11 |