일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- effective python
- hadoop2
- C
- recursion
- scrapy
- 코딩더매트릭스
- graph
- Sort
- hive
- 하둡2
- yarn
- NumPy
- HelloWorld
- 하이브
- tensorflow
- 딥러닝
- GRU
- 파이썬
- 텐서플로
- 주식분석
- LSTM
- 그래프이론
- 알고리즘
- python
- 선형대수
- C언어
- RNN
- Java
- codingthematrix
- collections
- Today
- Total
목록Python/알고리즘_문제 (23)
EXCELSIOR
[문제]어떤 수 N(1≤N≤1,000,000) 이 주어졌을 때, N의 다음 큰 숫자는 다음과 같습니다.N의 다음 큰 숫자는 N을 2진수로 바꾸었을 때의 1의 개수와 같은 개수로 이루어진 수입니다.1번째 조건을 만족하는 숫자들 중 N보다 큰 수 중에서 가장 작은 숫자를 찾아야 합니다.예를 들어, 78을 2진수로 바꾸면 1001110 이며, 78의 다음 큰 숫자는 83으로 2진수는 1010011 입니다. N이 주어질 때, N의 다음 큰 숫자를 찾는 nextBigNumber 함수를 완성하세요. [풀이]bin()함수를 사용하여 for문을 돌면서 주어진 숫자의 2진수에서 1의 개수가 같은 수를 찾아서 return해 주었다.12345678def nextBigNumber(n): for num in range(n+1,..
문제is_pair함수는 문자열 s를 매개변수로 입력받습니다. s에 괄호가 알맞게 짝지어져 있으면 True를 아니면 False를 리턴하는 함수를 완성하세요. 예를들어 s가 "(hello)()"면 True이고, ")("이면 False입니다. s가 빈 문자열("")인 경우는 없습니다. 풀이regular expression를 이용하여 문제를 해결하였다. import re def is_pair(s): while True: s = re.sub('\w+','',s) s = re.sub('\(\)','',s) if len(s) is 0 or s is re.sub('\(\)','',s): break return len(s) is 0 # 아래는 테스트로 출력해 보기 위한 코드입니다. print( is_pair("(hell..
1. 문제행렬의 곱셈은, 곱하려는 두 행렬의 어떤 행과 열을 기준으로, 좌측의 행렬은 해당되는 행, 우측의 행렬은 해당되는 열을 순서대로 곱한 값을 더한 값이 들어갑니다. 행렬을 곱하기 위해선 좌측 행렬의 열의 개수와 우측 행렬의 행의 개수가 같아야 합니다. 곱할 수 있는 두 행렬 A,B가 주어질 때, 행렬을 곱한 값을 출력하는 productMatrix 함수를 완성해 보세요. 2. 풀이1) 내가 작성한 코드python의 numpy를 import 시켜 list인 A, B를 matrix로 변환한 뒤 return할 때 다시 tolist()를 이용하여 list형태로 return하였다. import numpy as np def productMatrix(A, B): return (np.matrix(A)*np.mat..
1. 문제2016년 1월 1일은 금요일입니다. 2016년 A월 B일은 무슨 요일일까요?두 수 A,B를 입력받아 A월 B일이 무슨 요일인지 출력하는 getDayName 함수를 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 를 출력해주면 됩니다. 예를 들어 A=5, B=24가 입력된다면 5월 24일은 화요일이므로 TUE를 반환하면 됩니다. 2. 풀이1) 내가 작성한 코드datetime을 import하여 weekday() 함수를 사용하여 풀었다. import datetime def getDayName(a,b): answer = ['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN'] num = datetime.date(2..
1. 문제자연수로 이루어진 길이가 같은 수열 A,B가 있습니다. 최솟값 만들기는 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱한 값을 누적하여 더합니다. 이러한 과정을 수열의 길이만큼 반복하여 최종적으로 누적된 값이 최소가 되도록 만드는 것이 목표입니다.예를 들어 A = [1, 2] , B = [3, 4] 라면 1. A에서 1, B에서 4를 뽑아 곱하여 더합니다. 2. A에서 2, B에서 3을 뽑아 곱하여 더합니다.수열의 길이만큼 반복하여 최솟값 10을 얻을 수 있으며, 이 10이 최솟값이 됩니다. 수열 A,B가 주어질 때, 최솟값을 반환해주는 getMinSum 함수를 완성하세요. 2. 풀이 1) 내가작성한 코드sort 메소드와 reverse 메소드를 사용하여 해결했다. def getMinSum(A..
1. 문제어떤 수를 입력받아 그 수의 약수를 모두 더한 수 sumDivisor 함수를 완성해 보세요. 예를 들어 12가 입력된다면 12의 약수는 [1, 2, 3, 4, 6, 12]가 되고, 총 합은 28이 되므로 28을 반환해 주면 됩니다. 2. 풀이 1) 내가 작성한 코드 for문을 통해 나머지가 0이 되는 값을 찾아 더해 해결했다. def sumDivisor(num): answer = 0 for i in range(1,num+1): if num%i==0: answer += i return answer # 아래는 테스트로 출력해 보기 위한 코드입니다. print(sumDivisor(12)) 2) 다른 풀이 sum메소드를 통해 깔끔하게(?) 해결했다. 부럽다. def sumDivisor(num): ret..
1. 문제 피보나치 수는 F(0) = 0, F(1) = 1일 때, 2 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 점화식입니다. 2 이상의 n이 입력되었을 때, fibonacci 함수를 제작하여 n번째 피보나치 수를 반환해 주세요. 예를 들어 n = 3이라면 2를 반환해주면 됩니다. 2. 풀이 1) 내가 작성한 코드 ① Recursion을 이용한 풀이 : 풀이는 맞지만 숫자가 커지게 되면 시간이 오래걸려 출력이 되지 않는 문제가 발생했다. def fibonacci(num): if num < 2: return num else: return fibonacci(num-1)+fibonacci(num-2) # 아래는 테스트로 출력해 보기 위한 코드입니다. print(fibonacci(..
1. 문제 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬을 입력받는 sumMatrix 함수를 완성하여 행렬 덧셈의 결과를 반환해 주세요. 예를 들어 2x2 행렬인 A = ((1, 2), (2, 3)), B = ((3, 4), (5, 6)) 가 주어지면, 같은 2x2 행렬인 ((4, 6), (7, 9))를 반환하면 됩니다.(어떠한 행렬에도 대응하는 함수를 완성해주세요.) 2. 풀이 1) 내가 작성한 코드 - 임시 리스트를 만들어 이중 for 문을 통해 문제를 해결하였다. def sumMatrix(A,B): answer = [] for i in range(len(A)): tmp=[] for j in range(len(A[i])): tmp.a..