2024/07 34

프로그래머스 <가장 가까운 글자>

나의 풀이)def solution(s):     answer = []    visited = {}     for i,j in enumerate(s):        if j in visited:             diff = i - visited[j] + 1             answer.append(diff)             visited[j] = i+1         else:            answer.append(-1)            visited[j] = i+1     return answerenumerate()를 사용해서 값과 순서를 이용, visited 딕셔너리에 값과 마지막으로 나왔던 인덱스를 저장하여 해결하였다.처음 나오면 -1, 또 나오면 마지막 위치를 가져와서 사용

TIL/Python 2024.07.19

TIL (7/19) <날짜 차이 구하기 datediff()>

처음에 if(end_date - start_date >= 30, '장기 대여', '단기 대여') 이렇게 풀었다가 잘못된 데이터가 조회되었다.date형 자료에 (-) 연산을 하기 위해서는 datediff() 함수를 사용해야 한다.#datediff() 기본형datediff(큰 날짜, 작은 날짜) (나의 풀이)select history_id, car_id, date_format(start_date,'%Y-%m-%d') as start_date, date_format(end_date,'%Y-%m-%d') as end_date, if(datediff(end_date, start_date)+1 >= 30, '장기 대여', '단기 대여') as rent_type from car_rental_company_rental..

TIL/SQL 2024.07.19

데이터 전처리1

데이터 전처리내가 원하는 데이터를 보기 위해 하는 모든 활동실제 데이터는 원하는 형태로 구축되어있지 않다 > 하나하나 가공해서 활용해야 함. 데이터 전처리는 방향성을 갖고 해야함. 1) 데이터를 통해 무엇을 확인할 것인가?2) 어떤 의사결정을 위해 필요한가?3) 데이터를 통해 무엇을 얻고자 하는가? 1. PandasPython에서 데이터를 조작하고 쉽게 분석할 수 있게 도와주는 라이브러리대용량 데이터 처리가 가능데이터 조작 기능데이터 시각화 기능 제공데이터를 구조화하여 분석할 수 있음.Pandas에는 두 가지 구조가 있음. 1) DataFrame = 표 형태Index : 각 아이템을 특정할 수 있는 고유의 값 (엑셀에서의 좌측 열 순서)Columns : 하나의 속성을 가진 데이터 집합2) Series :..

TIL (7/17) <if문, 임시테이블>

1. if문select car_id, if(max(if(start_date = '2022-10-16', 1, 0))=0, '대여 가능', '대여중') as AVAILABILITY from CAR_RENTAL_COMPANY_RENTAL_HISTORY group by 1 order by 1 DESC## if 문 기본 구조if(조건, 조건이 참일경우 실행, 조건이 거짓일경우 실행) 2. 임시테이블with temp1 as( select car_id,           case when start_date = '2022-10-16' then 1           else 0 end as abailability from car_rental_company_rental_history)select car_id, if(m..

TIL/SQL 2024.07.17

DBMS

1. DBMSDBMS란?Database Management System, 데이터를 체계적으로 저장하고 관리할 수 있게 도와주는 프로그램데이터 저장데이터 검색데이터 수정데이터 삭제MySQL, Oracle, MS SQL Server 주로 사용 2. 키데이터를 고유하게 식별하는 데 사용. 키를 통해 데이터베이스 내에서 특정 데이터를 쉽게 찾을 수 있음. 기본 키(Primary Key)테이블에서 각 행(레코드)를 유일하게 식별중복되지 않으며 NULL값을 가질 수 없음.고유한 ID외래 키(Foreign Key)다른 테이블의 기본 키를 참조하는 키친구의 전화번호 저장한다고 생각후보 키(Candidate Key)역할 : 기본 키로 사용할 수 있는 모든 키여러 개의 후보 키 중에서 하나를 기본 키로 선택하는 것대체 키..

TIL/SQL 2024.07.16

TIL (7/16) <join>

JOIN둘 이상의 테이블을 연결해서 데이터를 검색하는 방법서로 연결하려면 적어도 하나의 컬럼을 공유하고 있어야 한다.공유하고 있는 컬럼을 PK 또는 FK 값으로 사용한다.  INNER JOIN기준 테이블과 조인 테이블 모두 데이터가 존재해야 조회됨.LEFT / RIGHT (OUTER) JOIN기준 테이블에만 데이터가 존재하면 조회됨.OUTER JOIN         INNER JOIN과 LEFT / RIGHT (OUTER) JOIN은 꼭 사용 방법을 알아두자.오라클에는 OUTER JOIN이 있지만, MySQL에는 없기 때문에 LEFT JOIN + RIGHT JOIN 해준다 INNER JOIN : 공통부분만 SELECTSELECT * FROM emp AS a INNER JOIN dept AS b ON a...

TIL/SQL 2024.07.16

TIL (7/15) <replace(), 문자열 기준대로 정렬하기, 최소 직사각형>

나의 풀이)def solution(s):     jj = { 'zero' : '0', 'one' : '1', 'two' : '2', 'three' : '3', 'four' : '4', 'five' : '5', 'six' : '6', 'seven' : '7', 'eight' : '8', 'nine' : '9' }    for k,v in jj.items():        s = s.replace(k,v)         return int(s)딕셔너리에 키 값으로 영문, value로는 숫자를 넣어 replace 함수로 k값이 있으면 v로 바꿔주어 해결하였다.  나의 풀이)def solution(strings, n):     strings.sort()    strings.sort(key=lambda x:x[n..

TIL/Python 2024.07.15

TIL (7/15) <두 개의 컬럼으로 그룹화하기, 조건에 맞는 사용자 조회하기>

select user_id, product_idfrom online_sale group by user_id, product_idhaving count(product_id) >= 2 order by user_id, product_id desc똑같은 user_id가 똑같은 product_id를 재구매 한 데이터를 찾아야해서 조건을 어떻게 줘야할 지 고민했다.group by user_id, product_id 하면 파이썬의 튜플 개념으로 user_id와 product_id의 쌍으로 그룹화를 한다는 것을 배웠다,  나의 풀이)select distinct b.user_id, nickname, concat(city,' ',street_address1,' ',street_address2) as '전체주소', conc..

TIL/SQL 2024.07.15

wil #2

FACTS (사실, 객관) : 이번 일주일 동안 있었던 일, 내가 한 일  ● SQL 코드카타 ~50, 알고리즘 코드카타 ~44, TIL 매일 작성하기  ● SQL 프로그래머스 문제 복습 및 강의, 함수 정리  FEELINGS (느낌, 주관) : 나의 감정적인 반응, 느낌  ● SQL은 서브쿼리 활용이 미숙하다고 느꼈고, 파이썬은 딕셔너리 활용이 미숙하다고 느꼈다.  ● 다음주에는 SQL 코드카타 풀 때 서브쿼리와 join을 적극적으로 활용해야겠다고 생각했다.  FINDINGS (배운 것) : 그 상황으로부터 내가 배운 것, 얻은 것  ● 함수를 많이 알고 활용할 줄 알아야 더 실력이 있다고 생각했지만, 실제로 많은 개발자들이 인터넷을 참조하고 중요한 것은 컴퓨터적으로 사고하는 것이라는 생각을 하였다. ..

WIL 2024.07.12

TIL (7/12) <zip(), enumerate()>

zip()zip() 함수는 여러 개의 순회 가능한 객체를 인자로 받고, 객체가 담고 있는 원소를 튜플의 형태로 엮어서 반환함. 예시) def remove_duplicates_and_count(s): count = {}    for i in list(input_string):        if i in count: count[i]+=1         else: count[i] = 1     result_with_frequency = list(zip(count.keys(), count.values())) return result_with_frequency딕셔너리를 zip을 이용하여 튜플을 값으로 가진 리스트로 변환 enumerate()순서가 있는 자료형을 입력으로 받았을 때, 인덱스와 값을 포함한 튜플 자료..

TIL/Python 2024.07.12