목록분류 전체보기 (25)
DataScience

정렬 : 이름, 암호, 회사 등의 키를 항목값의 정해진 기준에 따라 데이터 집합을 일정한 순서로 바꾸어 재설정하는 것을 말한다. 일반적으로 작은 데이터부터 시작하는 것을 오름차순(ascending) 정렬이라 하고, 큰 데이터부터 시작하는 것을 내림차순(descending) 정렬이라고 합니다. 정렬 알고리즘의 경우 아래 그림과 같이 여러가지 있으며 각기 다른 방법과 효율성을 보여준다. 단순 정렬 (버블, 선택, 삽입) ● 버블[Bublle] 정렬 : 두 인접한 데이터의 크기를 비교해 정렬 = 단순 교환 정렬 1. 버블 정렬의 특징 1. 시간 복잡도는 O(n^2)으로 다른 정렬 알고리즘보다 느린편이다. 2. 인접한 데이터의 크기만을 비교하므로 간단하게 구현이 가능하다. 2. 버블 정렬 과정 1. 비교 연산이..

탐색 : 주어진 많은 양의 데이터에서 자신이 원하는 데이터를 찾아내는 알고리즘을 의미한다. 주어진 데이터의 유형에 따라 적절한 탐색 알고리즘을 사용하는 것이 중요하며, 탐색의 대표적인 알고리즘으로 DFS와 BFS가 있다. 그런데 DFS와 BFS를 제대로 이해하려면 기본 자료구조인 스택과 큐에 대한 이해가 필요하며 재귀함수 역시 사용하므로 선행학습이 필요하다. [자료구조] 스택(Stack)과 큐(Queue) ● 스택[Stack] : 끝에서만 자료를 넣고 뺄 수 있는 선형 자료구조 스택이란 프링글스의 과자를 위에서부터 꺼내 먹는 것처럼 삽입과 삭제 연산이 후입선출(LIFO)로 이뤄지는 자료구조를 말합니다. sjm2449.tistory.com DFS와 BFS의 근본 근본적인 것은 처음부터 끝까지 모든 노드들을..

문제 설명 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요. 제한 사항 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다. 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다. 입출력 예#1 "try hello world"는 세 단어 "try", "hello", "world"로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 "TrY", "HeLlO", "WoRlD"입니다. 따라서 "TrY HeLlO WoRlD" 를..

문제 설명 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다. 제한 사항 두 수는 1이상 1000000이하의 자연수입니다. 입출력 예#1 위의 설명과 같습니다. 입출력 예#2 자연수 2와 5의 최대공약수는 1, 최소공배수는 10이므로 [1, 10]을 리턴해야 합니다. 입출력 예시 풀이 및 코드 리뷰 내가 제출한 답 (유클리드 호제법 사용) def Gcd(n,m): if m == 0 : return n else : return Gcd(m, n % m) ..

사용자 지정함수 def을 정의해서 사용할 정도로 길지 않은 함수를 간편하게 작성할 수 있어서 다른 함수의 인수로 넣을 때 주로 사용하는 것을 람다 표현식이라고 합니다. def sum (a,b): return a+b sum(10,20) >>> 30 sum = lambda a,b : a + b sum(10,20) >>> 30 둘다 똑같은 결과를 보여주지만, 사용자 지정함수의 경우 2줄이 필요하지만 람다 표현식의 경우 1줄에 결과값을 출력하는 것을 볼수 있다. 즉, 람다 표현식의 경우 매개변수, 연산자, 값 등을 조합한 lambda를 줄여서 반환값을 만드는 방식입니다. 아래의 사진을 보면 더 정확하게 파악이 가능한다. 1. 람다 표현식 사용 1. map() map() 함수의 경우 리스트의 요소를 지정된 함수로..

문제 설명 정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 다섯 가지이다. push X: 정수 X를 스택에 넣는 연산이다. pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 스택에 들어있는 정수의 개수를 출력한다. empty: 스택이 비어있으면 1, 아니면 0을 출력한다. top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. 제한 사항 1 ≤ my_string의 길이 ≤ 1,000 1 ≤ my_string 안의 자연수 ≤ 1000 연속된 수는 하나의 숫자로 간주합니다. 000123과 같이 0이 선행하는 ..

1. 약수와 배수 정의 공약수 : 두 정수의 공통 약수를 공약수라고 한다. 공배수 : 두 정수의 공통 배수를 공배수라고 한다. 2. 최대공약수와 최소공배수 정의 최대공약수[GCD} : 두 정수의 공약수 중 가장 큰 것을 최대공약수라고 한다. 최소공배수[LCM] : 양의 공배수 중 가장 작은 것을 최소공배수라고 한다. 위의 식을 보면 최소공배수를 구할때 최소공약수만 계산하면 쉽게 구할수 있는것을 알수 있다. 특히 최소 공약수의 경우 유클리드 호제법을 사용하면 소인수분해를 하지 않고도 계산이 가능하다. 4. 유클리드 호제법 유클리드 호제법은 두 수의 최대 공약수를 구할 때 사용하는 방법이다. 일반적으로 최대 공약수를 구할때는 소인수 분해를 이용한 공통된 소수들의 곱으로 표현하지만 유클리드 호제법은 MOD연산..

문제 설명 문자열 my_string이 매개변수로 주어집니다. my_string은 소문자, 대문자, 자연수로만 구성되어있습니다. my_string안의 자연수들의 합을 return하도록 solution 함수를 완성해주세요. 제한 사항 1 ≤ my_string의 길이 ≤ 1,000 1 ≤ my_string 안의 자연수 ≤ 1000 연속된 수는 하나의 숫자로 간주합니다. 000123과 같이 0이 선행하는 경우는 없습니다. 입출력 예#1 "aAb1B2cC34oOp"안의 자연수는 1, 2, 34 입니다. 따라서 1 + 2 + 34 = 37 을 return합니다. 입출력 예#2 "1a2b3c4d123Z"안의 자연수는 1, 2, 3, 4, 123 입니다. 따라서 1 + 2 + 3 + 4 + 123 = 133 을 ret..