전체 글

코딩테스트 스터디/프로그래머스

[LV2/스택/큐] 올바른 괄호

https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 처음풀이 def solution(s): while True: if '()' in s: s = s.replace('()', '') else: break if s == '': return True else : return False 시간 복잡도 생각안하고 가장 간단히 짜본 코드 효율성 문제에서 걸렸다. 일단 문자열 s에서 '()'를 찾아서 제거하는 과정을 반복하는데, 이 때 문자열을 제거하고..

코딩테스트 스터디/프로그래머스

[LV2/스택/큐] 기능개발

[풀이] 처음 풀이 def solution(progresses, speeds): answer = [] while True: cnt = 0 while True: if len(progresses) != 0: if progresses[0] >= 100: progresses.pop(0) speeds.pop(0) cnt += 1 else: if cnt > 0: answer.append(cnt) break else: answer.append(cnt) break if len(progresses) != 0: for i in range(len(progresses)): progresses[i] += speeds[i] else : break return answer 가장 먼저 progresses의 length를 판단해서 p..

코딩테스트 스터디/프로그래머스

[LV3/SQL] 헤비 유저가 소유한 장소

https://school.programmers.co.kr/learn/courses/30/lessons/77487 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] SELECT * FROM PLACES WHERE HOST_ID IN (SELECT HOST_ID FROM PLACES GROUP BY HOST_ID HAVING COUNT(*) >= 2); 서브쿼리로 간단하게 풀 수 있는 문제였습니다. HOST_ID를 GROUP BY 한 것으로 COUNT를 세고, COUNT가 2보다 큰 HOST_ID를 가져와서 HOST_ID가 해당 튜플 안에 존재하는 걸..

코딩테스트 스터디/프로그래머스

[LV 2/정렬] 가장 큰 수

https://school.programmers.co.kr/learn/courses/30/lessons/42746 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 처음 풀이 from itertools import permutations def solution(numbers): numbers = list(map(str, numbers)) numbers = list(set(permutations(numbers, len(numbers)))) numbers = list(map(''.join, numbers)) numbers = list(map(int, n..

코딩테스트 스터디/프로그래머스

[LV2/해시] 의상

https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] def solution(clothes): vd = dict() # 초기화 for clothe in clothes: vd[clothe[1]] = 0 # 딕셔너리 생성 for clothe in clothes: vd[clothe[1]] += 1 # 각 리스트별 가짓수 곱하기, 안입는 경우 추가(+ 1) first = 1 for i in vd.values(): first *= (i + 1) re..

코딩테스트 스터디/프로그래머스

[LV2/해시] 전화번호 목록

https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] 처음 풀이 def solution(phone_book): phone_book.sort() for idx, word in enumerate(phone_book): for word2 in phone_book[idx + 1:]: if word == word2[: len(word)]: return False return True phone_book을 sorting 한 뒤(문자열 길이) 짧은 문자..

코딩테스트 스터디/프로그래머스

[LV2 SQL] 조건에 맞는 도서와 저자 리스트 출력하기(JOIN 에서 WHERE 와 ON 의 차이)

https://school.programmers.co.kr/learn/courses/30/lessons/144854 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] SELECT BOOK_ID, AUTHOR_NAME, DATE_FORMAT(PUBLISHED_DATE, '%Y-%m-%d') as PUBLISHED_DATE FROM BOOK INNER JOIN AUTHOR ON BOOK.CATEGORY = '경제' and BOOK.AUTHOR_ID = AUTHOR.AUTHOR_ID ORDER BY PUBLISHED_DATE; WHERE로 풀어도 상관 없..

코딩테스트 스터디/프로그래머스

[LV2] 귤고르기

https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] from collections import Counter def solution(k, tangerine): total = 0 answer = 0 for i, v in Counter(tangerine).most_common(k): total += v answer += 1 if total >= k: return answer Counter로 가장 많은 귤의 크기로 정렬한 뒤 total에 귤의..

코딩테스트 스터디/프로그래머스

[LV1] 가장 가까운 같은 글자

https://school.programmers.co.kr/learn/courses/30/lessons/142086 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [풀이] def solution(s): answer = [] dict_ = {} for idx, apb in enumerate(s): if apb in dict_.keys(): result = idx - dict_[apb] answer.append(result) dict_[apb] = idx else : dict_[apb] = idx answer.append(-1) return answer 리스..

AWS

Redis, AWS ElasticCache 정리

오늘은 친구랑 얘기하다가 나온 김에 Redis와 AWS ElasticCache에 대해 정리해보겠습니다. 먼저 가장 쉽게 이해하게 됐던 말입니다. Redis는 인메모리 데이터베이스로 게임의 인벤토리 같이 실시간으로 데이터를 쥐고, 데이터를 읽거나 써야하는 경우 자주 사용한다 Redis Redis는 데이터베이스 캐싱, 실시간 분석, 메시징 시스템, 세션 관리, 잠금 관리 등 다양한 사용 사례에 널리 사용되고 있습니다. 뛰어난 성능: Redis는 인메모리 데이터베이스로 작동하므로 데이터를 디스크에 저장하는 대신 메모리에 저장합니다. 이로 인해 매우 빠른 읽기 및 쓰기 성능을 제공하며, 데이터 액세스에 대한 지연 시간을 크게 줄일 수 있습니다. 또한 Redis는 단일 스레드로 작동하여 락 관리 오버헤드를 줄이고..

데이터 노하우/꿀팁

Airflow 관련 문의 기록

프로젝트 당시 S3toRedshiftOperator 사용시 생겼던 문제에 관한 기록입니다. https://dataengineerstudy.tistory.com/194 [AWS REDSHIFT] AIRFLOW S3 → Redshift UPSERT 관련 에러('syntax error at or near "#"') 먼저 이 글은 저와 같이 REDSHIFT를 AIRFLOW와 연동해서 쓸 때 생기는 문제에 관한 글입니다. 문서가 너무 없고, 저만 겪는 상황 같아서, 열심히 삽질한 결과 작성해놓습니다. 이 글을 읽어보실 분들 dataengineerstudy.tistory.com 당시 문제점들을 기록해놨고, 해당 문제를 airflow 공식 github에 문의한 상태입니다. 임시로 해결해놨지만, 정말 임시로 해결한 문..

데이터 엔지니어링/Spark

5. Spark 프로그램 구조(Spark Session 생성, 환경변수)

1. SPARK SESSION 생성 Spark Session 생성 Spark 프로그램의 시작은 SparkSession을 만드는 것 프로그램마다 하나를 만들어 Spark cluster와 통신 : Singleton 객체 Spark 2.0에서 처음 소개 Spark Session을 통해 Spark이 제공해주는 다양한 기능을 사용 DataFrame, SQL, Streaming, ML API 모두 이 객체로 통신 config 메소드를 이용해 다양한 환경설정 가능 단 RDD와 관련된 작업을 할 때는 SparkSession 밑의 spark Context 객체를 사용 Spark Session API 문서 pyspark.sql.SparkSession — PySpark 3.1.1 documentation (apache.or..

우상욱
데이터엔지니어스터디