본문 바로가기

분류 전체보기202

[Python(파이썬)] 리스트 가로, 세로 변환 (행, 열 변환) 그림과 같이 가로와 세로를 변환 하는 방법 test = [[1,2,3,4],[4,5,6,7],[8,9,10,11],[12,13,14,15]] 방법 1 - map 사용 X # map x >>> test2 = [list(i) for i in zip(*test)] # 출력 >>> test2 [[1, 4, 8, 12], [2, 5, 9, 13], [3, 6, 10, 14], [4, 7, 11, 15]] 방법 2 - map 사용 O # map o >>> new_test = list(map(list, zip(*test))) # 출력 >>> new_test [[1, 4, 8, 12], [2, 5, 9, 13], [3, 6, 10, 14], [4, 7, 11, 15]] ※ Asterisk(*) 연산자 하나의 * 연산자.. 2021. 9. 1.
[Python(파이썬)] 별(Asterisk(*)) 연산자 Asterisk(*) 연산자 하나의 * 연산자는 리스트 또는 튜플에 있는 원소들을 개별 인자로 분리해 차례대로 꺼내서 함수 인자에 대응시킨다. ex1) >>> a = [1,2,3] >>> print(a) [1, 2, 3] >>> print(*a) 1 2 3 a 리스트를 * 없이 출력했을 땐 리스트 전체를 리스트 기호와 함께 출력했고 *를 리스트명 앞에 포함했을 땐 원소만 출력했다. ex2) >>> def test(x, y): return x + y >>> a = (5, 8) # without * >>> test(a) Traceback (most recent call last): File "", line 1, in test(a) TypeError: test() missing 1 required positi.. 2021. 9. 1.
[Algorithm] 점근 표기법, 빅오 표기법(big-O notation) 점근 표기법 어떤 함수의 증가 양상을 다른 함수와의 비교로 표현하는 방법 이것을 시간 복잡도, 공간 복잡도를 표현할 수 있다. 시간 복잡도 : 알고리즘을 수행하는 데 걸리는 시간 효율성 공간 복잡도 : 알고리즘을 수행하는 데 걸리는 메모리 효율성 대표적 세 가지 유형의 점근 표기법 1. 빅 오(big-O) - 점근적 상한선(upper bound) 기준 2. 빅 오메가(big-Ω) - 점근적 하한선(lower bound) 기준 3. 빅 세타(big-θ) - 점근적 평균 기준 예를 들어 복잡한 함수 f(n)이 있을 때, 실행시간이 가장 빠른게 하한, 실행시간이 가장 느린게 상한이라고 보면 된다. 빅 오(big-O) -> f(n) = O(g(n)) f(n)의 복잡도는 최악의 경우라도 g(n)보다 작거나 같다는.. 2021. 8. 30.
[프로그래머스/Level2] 위클리 챌린지 5주차 문제 설명 사전에 알파벳 모음 'A', 'E', 'I', 'O', 'U'만을 사용하여 만들 수 있는, 길이 5 이하의 모든 단어가 수록되어 있습니다. 사전에서 첫 번째 단어는 "A"이고, 그다음은 "AA"이며, 마지막 단어는 "UUUUU"입니다. 단어 하나 word가 매개변수로 주어질 때, 이 단어가 사전에서 몇 번째 단어인지 return 하도록 solution 함수를 완성해주세요. 제한사항 word의 길이는 1 이상 5 이하입니다. word는 알파벳 대문자 'A', 'E', 'I', 'O', 'U'로만 이루어져 있습니다. 입출력 예 word result "AAAAE" 6 "AAAE" 10 "I" 1563 "EIO" 1189 입출력 예 설명 입출력 예 #1 사전에서 첫 번째 단어는 "A"이고, 그다음은 .. 2021. 8. 30.
[프로그래머스/Level2] 삼각 달팽이 문제 설명 정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 1,000 이하입니다. 입출력 예 n result 4 [1,2,9,3,10,8,4,5,6,7] 5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11] 나의 풀이 [Python(파이썬)] import itertools def solution(n): # 2차원 리스트 초기화 하기 temp = .. 2021. 8. 25.
[Python(파이썬)] 2차원 리스트를 1차원으로 만들기 2차원 리스트를 1차원으로 만들기 test = [[1], [2, 12], [3, 13, 11], [4, 14, 15, 10], [5, 6, 7, 8, 9]] testresult = [1, 2, 12, 3, 13, 11, 4, 14, 15, 10, 5, 6, 7, 8, 9] 2차원 리스트를 1차원으로 만드는 다양한 방법 1. sum 함수를 이용한 방법 - sum(리스트명, []) 2. itertools를 이용한 방법1 - itertools.chain(*iterables) 3. itertools를 이용한 방법2 - itertools.chain.from_iterable(iterables) 4. list comprehension을 이용한 방법 - reduce(집계 함수, iterable 데이터) 5. reduc.. 2021. 8. 25.
[프로그래머스/Level2] 주식 가격 문제 설명 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,000 이하인 자연수입니다. prices의 길이는 2 이상 100,000 이하입니다. 입출력 예 prices return [1, 2, 3, 2, 3] [4, 3, 1, 1, 0] 입출력 예 설명 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다. 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다. 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다. 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다. 5초 시점의 ₩3은.. 2021. 8. 24.
[프로그래머스/Level2] 큰 수 만들기 문제 설명 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다. 예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다. 문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요. 제한 조건 number는 1자리 이상, 1,000,000자리 이하인 숫자입니다. k는 1 이상 number의 자릿수 미만인 자연수입니다. 입출력 예 number k return "1924" 2 "94" .. 2021. 8. 20.
[Python(파이썬)] range, enumerate 함수 range([시작 숫자,] 종료 숫자 [,step]) 특정 구간의 숫자 범위를 만들어 주는 함수 특정 구간의 숫자 범위의 값을 반복 가능한 객체로 만들어 return 시작 숫자를 생략한다면 default = 0 step을 생략한다면 default = 1이다. for문과 함께 사용한 range(시작 숫자, 종료 숫자, step) 시작 숫자부터 step 숫자만큼의 간격으로 (종료 숫자 - 1)까지의 정수 범위를 반환 # range 예 for i in range(2, 8, 2): print(i) # 출력 2 4 6 for문과 함께 사용한 range(시작 숫자, 종료 숫자) 시작 숫자부터 step(default = 1) 간격으로 (종료 숫자 - 1)까지의 정수 범위.. 2021. 8. 20.
[Algorithm] 그리디 (탐욕) 알고리즘 그리디 알고리즘(탐욕법, Greedy Algorithm) 매 선택에서 현재 상황에 지금 당장 좋은 것만을 선택하여 적합한 결과를 도출하는 알고리즘 설계 기법 이 방법은 선택하는 그 순간에는 최적인 방법이지만 최종적으로 보면 그 선택들이 최적이라는 보장은 없다. 그리디 알고리즘은 완전한 최적해를 보장하지는 않지만 그런대로 괜찮은 해답을 알려준다. 계산속도가 정확한 알고리즘에 비해서 빠른 경우가 많다. 따라서, 적당히 괜찮은 해답을 정해진 시간 내 찾을 때 적합한 알고리즘이다. 대표적인 그리디 알고리즘의 예 : 다익스트라 알고리즘(최단 경로 문제) 대표적인 그리디 알고리즘 문제 : 거스름 동전 개수 구하기 def greedy(money): m = [500, 100, 50, 10] cnt = 0 for i i.. 2021. 8. 13.