일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- Airflow
- Spark
- MySQL
- leetcode
- hackerrank
- SQL
- 백준 온라인 저지
- 알고리즘
- airflow architecture
- 백준온라인저지
- Data Engineering
- dsf
- datacamp
- docker
- BOT
- Python
- docker container
- 프로그래머스
- docker image
- 빅데이터를 지탱하는 기술
- data_engineer
- 데이터 엔지니어
- Pseudo Lab
- delete join
- 그리디
- telegram
- Dynamic Programming
- airflow webserver
- 2023년 목표
- terraform
- Today
- Total
목록Algorithm (31)
Lim Seunghyun Space
1. 선택 정렬 개념 2. 선택 정렬 예시 3. 선택 정렬 구현 (With Python3) 4. 선택 정렬 특징 선택 정렬 개념 제자리 정렬 알고리즘의 하나로, 다음의 순서를 반복해서 정렬하는 알고리즘 주어진 데이터 중, 최솟값을 찾는다. 해당 데이터를 가장 맨 앞의 데이터와 교체 맨 앞의 위치를 뺀 나머지 데이터를 동일한 방법으로 반복 선택 정렬 개념 만일 [3,4,5,1,2]을 정렬한다고 하면 리스트의 최솟값은 1이므로 0번째 인덱스인 3과 값을 교환한다. 그 결과는 [1,4,5,3,2]. 그다음 리스트에서 1을 제외한 최솟값은 2이므로 1번째 인덱스인 4와 값을 교환한다. 그 결과는 [1,2,5,3,4]. 그다음 리스트에서 1,2를 제외한 최솟값은 3이므로 2번째 인덱스인 5와 값을 교환한다. 그 ..
1. 버블 정렬 정의 2. 버블 정렬 개념 3. 버블 정렬 예시 4. 버블 정렬 구현 (With Python3) 버블 정렬 정의 두 인접한 원소를 검사하여 정렬하는 방법 버블 정렬 개념 두 인접한 원소를 검사하기 때문에 n번째는 n+1번째 값과 비교하여 교환해주는 방식으로 진행한다. 만일 정렬하고자 하는 대상이 [6,5,3,1,8,7,2,4]이라면, 첫번째 값인 6은 두번째 값인 5와 비교를 하고 첫번째 값이 두번째 값보다 크기 때문에 서로 값을 교환해준다. 그 결과 [5,6,3,1,8,7,2,4]가 되고 그 다음으로는 두번째 값인 6과 3을 비교해서 값을 교환해준다. 그 결과 [5,3,6,1,8,7,2,4]가 되고 그 다음으로 세번째 값인 6과 네번째 값인 1을 비교해 값을 교환해준다. 이런식으로 마지..
문제 링크 https://leetcode.com/problems/climbing-stairs/ Climbing Stairs - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 해설 계단의 정상에 도달하려면 n번의 걸음을 해야한다. 매번 1개 혹은 2개의 계단을 오를 수 있다. 얼마나 많은 방법으로 정상에 오를 수 있는가 나의 풀이 (Python3) class Solution: def climbStairs(self, n): if n
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 문제 해설 문자열 s을 n개 단위로 잘라서 압축해서 생성한 문자열의 최소 길이를 구하기 (n = 1,2,3,4,..) 나의 풀이 (Python) def solution(s): answer = 1001 for i in range(1, len(s) + 1): comp = "" count = 1 previous = "" for j in range(0..
문제 : https://www.hackerrank.com/challenges/validate-a-roman-number/problem?isFullScreen=true Validating Roman Numerals | HackerRank Use regex to validate Roman numerals. www.hackerrank.com 문제 해설 정규표현식을 이용하여 주어진 로마숫자가 유효한지 판단하는 로직 문제 풀이 (Python3) regex_pattern = r"^M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$"# Do not delete 'r'. import re print(str(bool(re.match(regex_pattern, input()..
문제 https://www.acmicpc.net/problem/1904 나만의 풀이 00, 1 타일을 사용하여 수열을 생성하기 때문에 N = 1부터 케이스를 따져봤다. N = 1이면, 1 으로 총 1개의 2진 수열을 만들 수 있다. N = 2이면, 11, 00 으로 총 2개의 2진 수열을 만들 수 있다. N = 3이면, 111. 001. 100 으로 총 3개의 2진 수열을 만들 수 있다. N = 4이면, 1111, 0011, 0000, 1001, 1100 으로 총 5개의 2진 수열을 만들 수 있다. 위의 규칙에서 N = 3까지 보면, N = 2 11, 00 에서 추가되는 건 1 밖에 없기 때문에 N = 3은 N = 2 + N = 1로 생각해볼 수 있었다. 위의 규칙을 일반화 하였을 때, function(..
문제 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 효과적인 배추흰지렁이를 구입하기로 결심한다. 이 지렁이는 배추근처에 서식하며 해충을 잡아 먹음으로써 배추를 보호한다. 특히, 어떤 배추에 배추흰지렁이가 한 마리라도 살고 있으면 이 지렁이는 인접한 다른 배추로 이동할 수 있어, 그 배추들 역시 해충으로부터 보호받을 수 있다. 한 배추의 상하좌우 네 방향에 다른 배추가 위치한 경우에 서로 인접해있는 것이다. 한나가 배추를 재배하는 땅은 고르지 못해서 배추를 군데군데 심어 놓았다. 배추들이 모여있는 곳에는 배추흰지렁이가 한 마리만 있으면 되므로 서로 인접해있는 배추들이 몇 군..
문제 정의 N에 자신의 연봉 최댓값을 보관 0부터 N까지 스티커를 이용하여 표현 1개의 팩에는 [0]부터 [9]까지 한 장씩 존재 나의 풀이 # 근우의 연봉 최댓값 N = input() S = "1" * (len(N) -1)+ "0" if len(N) == 1: print(1) else: if int(N) > int(S): print(len(N)) else: print(len(N) - 1) 자리 수가 1인 경우는 무조건 1개의 팩을 이용하기 때문에 조건을 두어 처리 1개의 팩으로 생성할 수 있는 최대 숫자 : 10 2개의 팩으로 생성할 수 있는 최대 숫자 : 110 3개의 팩으로 생성할 수 있는 최대 숫자 : 1110 위의 규칙을 이용하여 N의 자리수를 이용하여 S를 생성하고 N과 S간의 비교를 통해 스..
문제 정의 N명의 학생들의 예상 등수와 실제 등수 간의 차이 합이 최소가 되도록 한다. 예상 등수와 실제 등수 간의 차이는 절대값으로 계산한다. 1등부터 N등까지 같은 등수는 없다. 나의 풀이 # source : https://www.acmicpc.net/problem/2012 N = int(input()) ranks = [] answer = 0 for _ in range(N): ranks.append(int(input())) for index, rank in enumerate(sorted(ranks)): answer += abs((index + 1) - rank) print(answer) 예상 등수와 실제 등수 간의 차이가 최소가 되어야 하므로, 예상 등수를 오름 차순으로 정렬하여 예상 등수와 실제 등..
문제 정의 문자열 S는 0, 1 구성되어 있고, 모든 숫자가 전부 같게 만들어야 한다. 뒤집을 때 연속된 숫자인 경우, 뒤집는 횟수는 1회로 한다. 예를 들어, 00010일 시, 앞의 세 자리를 11110으로 뒤집는다면 이는 1회 뒤집는 것으로 간주 뒤집는 최소 횟수를 구하기 나의 풀이 # source : https://www.acmicpc.net/problem/1439 import sys S = sys.stdin.readline().strip() result = [0, 0] for i in [0, 1]: is_continue = False for idx, value in enumerate(S): if value != str(i): if is_continue == False: result[i] += 1 ..