본문 바로가기
728x90

Algorithm/Python82

[programmers]python 12926 시저암호 # 시저암호# 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. # 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. # "z"는 1만큼 밀면 "a"가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수 return# 아스키코드# 문자열을 숫자로 ord()# 숫자를 문자열로 chr()# 알파벳은 총 26개# 대소문자 구분으로 나누자def solution(s, n): S='' print(ord("a")) # print(ord("z")) print(ord("A")) # print(ord("Z")) for i in s: if i.isuppe.. 2024. 6. 11.
[programmers] python 86491 최소직사각형 # 최소직사각형# 명함의 가로 세로가 주어질때 가장 최적의 직사각형 구하기# 2중 배열인데 눕힐수 있으니... 길이가 맞으면 될것같다.def solution(sizes): answer = [0,0] for i in sizes: i=sorted(i) # print(i) if i[0] > answer[0]: answer[0]=i[0] if i[1] > answer[1]: answer[1]=i[1] return answer[0]*answer[1]def sol2(size): answer=[] a=0 b=0 for i ,j in size: if i 2024. 6. 4.
[programmers]python 12940 최소공배수 최대공약수 # 최대공약수와 최소공배수# 두 수의 최대공약수와 최소공배수를 반환# 최대 공약수 공통된 약수중 제일 큰값def solution(n, m): answer = [] # 최대 공약수는 지수를 활용 value=min(n,m) for i in range(1,value+1): if n%i==0 and m%i==0: answer.append(i) minv=answer[-1] n/=minv m/=minv # 최소 공배수는 나머지와 최대공약수의 곱 maxv=int(minv*n*m) return [minv,maxv]def solution(n, m): answer = [] # 최대 공약수는 지수를 활용 value = mi.. 2024. 5. 31.
[programmers]python 12980 점프와 순간이동 # 점프와 순간이동# 거리 N이 주어지고 점프는 1칸을 가면 1의 건전지가 달고# 순간이동은 (현재까지 이동 거리) X 2의 거리를 이동 가능# 최소의 건전지 사용한 답 구하기 = 탐욕법(Greedy) 풀이# 위치 x 에서 0으로 갈떄 2의 배수라면 순간이동 홀수라면 배터리 카운트def solution(n): answer = 0 while n > 0 : if n % 2 == 1 : answer += 1 n //= 2 return answerprint(solution(5000)) #5# print(solution(6)) #2 2024. 5. 28.
[programmers]python 12917 문자열 내림차순 배치 # 문자열 내림차순으로 배치하기# 문자열 s에 나타나는 문자를 쿤것부터 작은순으로 정렬해 새로운 문자열 리턴# 문자열을 ascii code로 변환해서 순서를 맞춘 후 다시 정렬# ord() chr()# 굳이 변환해서 안풀어도 괜찮네?def solution(s): return ''.join(sorted(s,reverse=True)) # answer = [] # ans='' # for i in s: # print(i) # answer.append(ord(i)) # answer.sort() # answer=reversed(answer) # for i in answer: # ans+=(chr(i)) # return ansprint(.. 2024. 5. 17.
약수구하기 # 약수 1~자신 까지 1씩 증가하면서 나누어 떨어지는 경우 리스트에 추가# 시간복잡도 O(n)def divisor(number): result = [] for i in range(1, int(number**(1/2))+1): if number%i==0: result.append(i) return result# 어떤 수 N의 약수는 항상 N=A∗B로 나타낼 수 있다는 점에서 착안하여, A를 구할 경우 B까지 리스트에 추가해주는 방식으로 효율 상승# 시간 복잡도 O(n)을 O(n^1/2)def divisor(number): result = [] for i in range(1, int(number**(1/2))+1): if number.. 2024. 5. 9.
728x90