일반 프로그래밍/알고리즘
-
파이썬 알고리즘 - 과반수 찾기, 괄호 유효성 검사일반 프로그래밍/알고리즘 2022. 4. 20. 22:38
문제 7 : 숫자로 이루어진 리스트 nums를 argument로 받았을때, 숫자중에서 과반수를 반환하라. 나의 답 def more_than_half(nums): for num in set(nums): #set를 통한 중복 거르기 if nums.count(num) >= (len(nums) / 2): return num # for i in nums: # if nums.count(i) > (len(nums) / 2): # return i 크게 어려울것 없는 문제였지만 생각할 점이 하나 있었는데 바로 처리 시간이다. 문제에서 테스트하는 nums의 길이는 길지 않아서 두번째 답을 이용해도 괜찮지만, nums의 길이가 길고 숫자가 다양하다면 첫번째 답처럼 set를 통해 for문의 처리 시간을 줄일 수 있을 것 같다..
-
파이썬 알고리즘 - 공통시작단어 반환, 로마숫자 변환일반 프로그래밍/알고리즘 2022. 4. 18. 20:41
문제 5 : strs는 단어가 담긴 배열이다. Argument로 strs가 주어졌을 때 , 공통된 시작 단어(prefix)를 반환하라. 예를 들어 strs = ['start', 'stair', 'step']일 때 반환 값은 'st'가 되어야 한다. 나의 답 def get_prefix(strs): if len(strs) == 0: return '' prefix = strs[0] for i in range(1,len(strs)): for j in range(len(strs[i])): if strs[i][j] not in first: first = first[:j] break return prefix 먼저 strs가 빈 문자열로 주어졌을 때를 대비한 예외 if문을 작성하였다. 만약 strs가 빈 문자열이 아닐..
-
파이썬 알고리즘 - 알파벳의 중복이없는 가장 긴 단어/뒤집은수 일치일반 프로그래밍/알고리즘 2022. 4. 14. 18:48
문제 3: String 형인 str argument에서 중복되지 않은 알파벳으로 이루어진 제일 긴 단어의 길이를 반환하라. 나의 답(오답) def get_len_of_str(str): list = [] s = '' for i in range(1,len(str)): if str[i-1] != str[i]: str = str + str[i-1] elif str[i-1] == str[i]: s = s + str[i-1] list.append(str) s = '' return len(max(list)) 문자열의 인덱스 기능을 이용해 str의 i-1번째 문자와 i번째의 문자가 다르면 string 속성인 s 변수에 문자를 추가하고, 다르면 일단 i-1번째의 문자를 str에 추가한 후 이를 다시 list에 추가하고,..
-
파이썬 알고리즘 - 덧셈 수 찾기 / 숫자 뒤집기일반 프로그래밍/알고리즘 2022. 4. 12. 21:25
문제 1 : two_sum 함수에 nums 리스트와 target을 argument로 넘기면, 더해서 target이 나오는 nums의 index번호들을 배열에 담아 return하라. 나의 답 def two_sum(nums, target): nums_index = [] a = 0 b = 0 bool = True for i in nums: for j in nums: if i + j == target: a = i b = j bool = False break if bool == False : break nums_index.append(nums.index(a)) nums_index.append(nums.index(b)) return nums_index 먼저 리턴할 리스트인 변수 nums_index를 생성하고, 변수..