공부/알고리즘
-
[python] Codility Lesson 2-2. OddOccurrencesInArray공부/알고리즘 2021. 7. 23. 21:57
1. 문제 잘못읽어 5시간 날린 코드 odd 넘버의 갯수가 하나인줄 알고 5시간 끙끙 앓다가 열받아서 테스트 케이스 print한뒤 기절할뻔했다. odd 넘버의 갯수가 하나가 아니였다... def solution(A): # write your code in Python 3.6 A.sort() print(A) if len(A) == 1: return A[0] for i in range(len(A)): if i == len(A)-3: return A[-1] #y if A[i] == A[i+1]: #y continue else: if A[i+1] == A[i+2]: if i == 0: return A[0] continue else: return A[i+1] 2. 수정한 정답 코드 def solution(A): ..
-
[python] Codility Lesson 2-1. CyclicRotation공부/알고리즘 2021. 7. 23. 03:01
def solution(A, K): # write your code in Python 3.6 if len(A) == 0: return [] else: shift_num = K % len(A) temp = [0 for _ in range(len(A))] for i in range(len(A)): if i + shift_num >= len(A): temp[i + shift_num - len(A)] = A[i] else: temp[i + shift_num] = A[i] return temp 어려운점 없는 무난한 연습문제 였다. 꾸준히 단계별로 구상후 코드로 나타내는 연습을 계속 해보자. 1. shift_num은 K 에다가 리스트 A의 사이즈를 나눈 나머지로 하면 되겠구나. 2. temp 리스트를 A리스트 사이..
-
[python] Codility Lesson 1-1. BinaryGap공부/알고리즘 2021. 7. 22. 23:59
def solution(N): # write your code in Python 3.6 temp = format(N, "b") answerList = [] index = 0 #for i in range(len(temp)): while index < len(temp)-1: if temp[index] == '1': len_binary = 0 for j in range(index+1, len(temp)): if temp[j] == '1': if len_binary != 0: answerList.append(len_binary) index = j break else: index = j break else: len_binary += 1 index = j + 1 else: index += 1 if len(answe..
-
회문(回文, palindrome) 알고리즘 구현 by Python공부/알고리즘 2021. 3. 8. 22:00
[문제] 회문(回文, palindrome)은 어떤 방향으로 읽어도 같은 문자열을 말한다. 예를 들면 “여보 안경 안 보여”, “다 큰 도라지라도 큰다.”, “아들딸이 다 컸다 이 딸들아”은 잘 알려진 회문이다. 이번에는 영문 소문자 문자열만 다룬다. 예를 들어 ‘abba’ ‘kayak’, ‘reviver’, ‘madam’은 모두 회문이다. 만일 그 자체로는 회문이 아니지만 한 문자를 제거하여 회문으로 만들 수 있으면 이런 문자열을 “유사회문”(quasi palindrome)이라고 부른다. 예를 들어 ‘summuus’는 5번째나 혹은 6번째 문자 ‘u’를 제거하면 회문 ‘summus’이 되므로 이것은 유사회문이다. 여러분은 제시된 문자열이 그 자체로 회문인지, 또는 “유사회문”인지, 아니면 그 외 일반 문..
-
재귀 알고리즘 구현 by Python공부/알고리즘 2021. 3. 3. 01:40
문제: 정수 4를 1, 2, 3의 조합으로 나타내는 방법은 다음과 같이 총 7가지가 있음, 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 입력으로 주어졌을 때, n을 1, 2, 3의 합으로 나타낼 수 있는 방법의 수를 구하시오. 출처: ACM-ICPC > Regionals > Asia > Korea > Asia Regional - Taejon 2001 문제를 읽자 마자, 피보나치 수열(1,1,2,3,5,8....) 처럼 각 정수 1부터 n까지 관계가 있을거같은 느낌이 강력하게 드는 문제였다. f(n)을 n일때 나타낼 수 있는 방법의 수라고하자. 패드에 숫자 1~5까지 일일이 적어보며 방법의 수를 찾고 규칙을 찾았다, 바로 f(n) = f(n-1) + f(n-2) + f(n..