전체 글

안녕하세요, 데이터 분석가를 꿈꾸는 개인기록 블로그입니다:)
문제https://www.acmicpc.net/problem/13305 문제 접근전체 주유소 이용 가격을 최소화하기 위해서는 가장 싼 곳에서 가장 많이 구매하여 가장 많이 이동해야한다. 주유소의 기름 가격을 순회하며, 가장 싼 곳의 주유소를 찾고, 해당 주유소의 가격이 가장 싸다면 도시를 이동할 만큼의 기름을 구매한다. 만약, 해당 주유소의 가격이 최소 금액보다 싸지 않다면 최소 금액의 주유소에서 최대한 많이 구매하도록 한다.  # 도시의 개수N = int(input())# 인접한 두 도시를 연결하는 도로의 길이를 왼쪽부터 제공length = list(map(int, input().split()))# 주요소의 리터당 가격price = list(map(int, input().split()))answer =..
문제 https://www.acmicpc.net/problem/1541 문제 접근문제의 입력은 총 3가지 이다. 예제 1의 경우55-50+40 을 55-(50+40)으로 묶으면 원하는 출력값인 -35가 도출된다.  예제 2의 경우, 10+20+30+40을 괄호없이 그냥 더하면 원하는 출력값인 100이 도출된다.  예제 3의 경우에도 2와 같다.  즉, '-' 뒤에 이어지는 '+' 연산을 모두 괄호로 묶어, 가장 큰 값을 뺄셈하게 되면 값이 작아지게 된다.  풀이 방법55-50+40을 예로 들자. 1. 먼저, '-' 를 기준으로 값을 나눈다. '55', '50+40' 2. '+' 기호가 있는 값은 덧셈 연산을 수행하고, '+' 기호가 없으면 그냥 정수로 변환한다.  3. 2에서 구한 값을 sum_list에..
문제https://www.acmicpc.net/problem/11399 문제는 길지만, 요약하자면 각 사람이 돈을 인출하는데 필요한 시간의 합의 최솟값을 구하면 되는 것이다.  풀이import sys# 문제 입력받기N = int(input())lines = list(map(int, sys.stdin.readline().split()))lines.sort()sum_list = [0]# 누적합 구하기for line in lines: tmp = line + sum_list[-1] sum_list.append(tmp) print(sum(sum_list)) 먼저, 인출 시간이 적은 사람 순으로 정렬을 한 후, 각 사람마다 걸리는 시간을 합한다. 즉, 입력이 3 1 4 3 2 로 주어질 때, 1 2..
문제 설명https://www.acmicpc.net/problem/1931 그리디 알고리즘에 관한 문제이다.  문제 접근문제는 각 회의가 겹치지 않게 하면서 가장 많은 회의의 개수를 찾는 것이다. 어떻게 해야할까? 1. 회의 시작 시간을 기준으로 가장 빠른 회의 선택: 이 경우 회의 시작 시간은 빠르지만, 진행 시간이 길다면 다른 회의를 선택하지 못하므로 옳지 않다. ex) (0, 10) 과 (1, 2), (2, 4) 가 있으면, (0, 10)은 좋지 않은 선택지이다.  2. 회의 진행 시간이 짧은 기준으로 선택: 회의 진행 시간에 따라 정렬을 하면, 시작시간과 종료시간이 뒤죽박죽된다. ex) (0, 3), (1, 5), (2, 3) -> (2, 3), (0, 3), (1, 5) 3. 회의 종료 시간을 ..
A/B 테스트 시스템 구성: A/B 테스트 = 런타임 시스템 + 분석 시스템런타임 시스템 : 사용자를 A에 둘지, B에 둘지 결정 (버킷 결정, 보통 백엔드 엔지니어+데이터 분석가가 진행)-> A/B 테스트를 진행할 사용자 버킷 정보를 ETL을 통해 데이터 웨어하우스에 불러옴 (사용자별 행동, 이벤트 로그, 구매정보 등)-> 분석 시스템 : dbt 등을 통해 분석하기 좋은 테이블로 만들고, 시각화 등 진행 A/B 테스트 구현 방법- 직접 구현- SaaS 사용 (Optimizely, VWO 등, 이들은 대부분 front-end 관련 테스트를 하는데 유용함)-> 보통은 SaaS를 쓰다가 직접 구현하는 식으로 고도화됨 A/B 테스트 전체 과정- A/B 테스트 제안 (주간미팅)-> A/B 테스트 실행 & QA-..
· 기타
프로그래머스를 잠시 멈추고 백준 사이트를 통해 알고리즘 문제를 풀려한다. 그런데 입출력부터 막히는 것이다;;; 필자는 VSCode를 사용하고 있는데, 여러줄의 입력을 제공하려할 때 아래 이미지와 같이 자동으로 두 번씩 실행되는 것이였다. 왜 여러줄 입력이 안되는지 열심히 찾아봤는데결국 원인은 찾지 못했다^^;;; 아무튼 좀 짜증나는 상태에서 백준 문제 풀이를 위한 새로운 vscode 확장 프로그램을 찾아내었다.  Competitive Programming Helper (cph) cph라고 불리는 이 확장 프로그램은 문제를 풀 때, 터미널에 입출력 제공없이 여러가지 테스트 케이스들을 확인할 수 있다. 위와 같이 왼쪽바에 생긴 cph 아이콘을 누르면, input과 output 결과들을 집어넣고 실행시간, 정..
데이터 팀의 미션과 발전 단계데이터 조직의 미션은 신뢰할 수 있는 데이터를 바탕으로 부가 가치를 생성하는 것이다.데이터가 매출에 어떻게 영향을 끼치는지 확인 필요 데이터 조직이 하는 일 - Decision Science: 고품질 데이터 기반으로 의사 결정권자에게 입력 제공-> 데이터를 고려한 결정(data informed decisions)을 가능하게 해줌. -> 데이터 기반 지표 정의, 대시보드와 리포트 생성 등을 수행* 데이터 고려한 결정(data informed decisions) VS 데이터 기반 결정(dat driven decisions)- 데이터를 고려한 결정 : 데이터는 참고 수단이고 의사 결정권자가 결정(새로운 일을 할 때)- 데이터 기반 결정 : 데이터를 보고 나타난 결과를 바탕으로 결정..
이번에는 시뮬레이션과 완전 탐색에 중점을 둔 구현 문제에 대해 알아보겠습니다.  구현이란, 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정  (사실상 모든 문제가 구현 문제라고 생각할 수 있습니다;^^)그러나 일반적으로 구현 유형의 문제는 문제에서 요구하는 내용이 구현에 초점이 맞춰있거나, 구현이 어려운 문제를 의미합니다. 즉, 풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제를 지칭합니다. 알고리즘은 간단한데 코드가 지나칠만큼 길어지는 문제실수 연산을 다루고, 특정 소수점 자리까지 출력해야 하는 문제문자열을 특정한 기준에 따라서 끊어 처리해야 하는 문제적절한 라이브러리를 찾아서 사용해야 하는 문제이러한 구현 문제의 경우, 다양한 라이브러리를 익히는 등 많은 연습이 필요한 문제입니다. 행렬은 파..
그리디 알고리즘이란? 그리디 알고리즘(탐욕법)은 현재 상황에서 지금 당장 좋은 것만 고르는 방법을 의미한다.  그리디 알고리즘은 한국어로 탐욕법이라고 하며, 현재 상황에서 지금 당장 좋은 것만 고르는 방법을 의미합니다. 일반적인 그리디 알고리즘은 문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력을 요구하는데요, 그리디 알고리즘의 해법은 그 정당성 분석이 중요합니다. 즉, 단순히 가장 좋아 보이는 것을 반복적으로 선택하는 것만으로도 최적의 해를 구할 수 있는지를 검토하는 것이 필요합니다.   아래와 같은 예시 문제가 있습니다. 루트 노드(5)부터 시작하여 거쳐 가는 노드 값의 합을 최대로 만들고 싶을 때, 최적의 해는 무엇인가요? 직관적으로 확인할 수 있듯이, 5 -> 7 -> 9로 이동하면 노트..
추천 시스템이란?추천 시스템은 사용자가 관심을 가질 만한 정보(상품, 서비스 등)를 필터링해서 제공하는 기법-> 사용자의 선호도 및 과거 행동을 기반으로 함=> 사용자의 만족감을 높이고 매출 증대의 효과 기대 - 정보 과부하 문제 해결 : 수많은 옵션 중 가장 관련도 높은 항목 선택- 맞춤형 경험 : 사용자의 충성도와 만족도 증가- 비즈니스 가치 : 사용자 증가 추천 시스템의 기본 원리- 콘텐츠 기반 필터링"내가 좋아했던 것을 기반으로 추천" - 협업 필터링"나랑 비슷한 사람이 좋아하는 것 추천" - 하이브리드 추천 시스템: 콘텐츠 기반 필터링과 협업 필터링의 장점 결합-> 사용자 개인과 사용자 그룹 패턴을 분석해 맞춤형 추천 추천 시스템 활용 사례유튜브 영상 추천: 사용자가 관심을 가질만한 영상 추천콘..
_알파카
yeonnys' 개발일지