공부
-
[python] Codility Lesson 4-3. MissingInteger공부/알고리즘 2021. 7. 25. 19:10
1. 100점받은 내가 작성한 코드 -> 코드를 보면 예외상황을 댐터진 곳 보수공사하듯 남이보면 얘 뭐하냐 싶을 정도로 덕지 덕지 작성되어 있다... 가성비 박살난 코드 및 난해하며 이런 식으로 작성하면 추가적인 예외상황이 있을때 코드를 수정하기도 뭣하다... 대충 생각한 단계는 1. 전달받은 list를 sort()해주자. 2. 그런다음 for문을 돌리는데 음수일때는 continue, 양수일때는 여러 조건을 달아서 처리하자 3. (여기서 문제발생) 위 두가지로 처리하니 예외상황 (끝이 1일때? 1이 아닐때? 음수만 있을때?) 결과적으로 이런 100점 받고도 불안한 사태에 이르럿다 def solution(A): # write your code in Python 3.6 A.sort() positive_cou..
-
[python] Codility Lesson 4-2. MaxCounters공부/알고리즘 2021. 7. 25. 03:07
Time Over에 걸려 77점 코드에서 2시간 가량 풀집중해서 풀다가 한숨 크게 쉬고 다른사람이 짠거 살펴보았다. 특출나게 한 방법들은 딱히 보이진 않았고 중간 중간 살짝 가미된... 왜 이렇게 생각 못했을까 하는 아쉬움이 크게 남은 문제였다. 1. 77점 타임오버된 코드 def solution(N, A): # write your code in Python 3.6 answer_list = [0 for _ in range(N)] counter = 0 for index, value in enumerate(A): if value < N+1: answer_list[value-1] += 1 counter +=1 else: if counter != 0: max_val = max(answer_list) #스트레스의..
-
[python] Codility Lesson 4-1. FrogRiverOne공부/알고리즘 2021. 7. 24. 18:43
이번 문제는 A배열의 원소인 leaf위치의 중복을 제거하는 것을 주요 포인트로 코드를 작성하였습니다. def solution(X, A): # write your code in Python 3.6 leaf_left = set() for i in range(len(A)): leaf_left.add(A[i]) if len(leaf_left) == X: return i return -1 1. leaf set을 생성해주자. 2. for 문을 A list 크기 만큼 돌면서 그 위치를 set의 크기가 X가 될때까지 돌려주자. (아래의 문제 조건에 의해) N and X are integers within the range [1..100,000]; each element of array A is an integer wi..
-
[python] Codility Lesson 3-3. TapeEquilibrium공부/알고리즘 2021. 7. 24. 18:10
Time Complexity section이라 O(N^2)이상 시간복잡도가 나오면 안될거 같아 2중 for문 대신 O(N) 또는 O(NlogN) 알고리즘을 생각 해보았다... 알고리즘 공부를 하며, list의 모든 합을 이용한 문제가 꽤 있는 것 같다.. 이번 문제도 list의 총 합을 이용해서 문제를 풀어 보았다. def solution(A): # write your code in Python 3.6 SUM = sum(A) answer_list = list() first = 0 second = 0 for i in range(len(A)-1): first += A[i] SUM -= A[i] second = SUM answer_list.append(abs(first - second)) return min(..
-
[python] Codility Lesson 3-2. PermMissingElem공부/알고리즘 2021. 7. 24. 02:13
Lesson 2-2의 sort메서드를 사용한게 기억이나 이렇게 풀어 보았는데, 마음에 들지않는다. 실제 코딩 테스트 응시중에 저렇게 많은 예외상황을 일일히 코드로 구현하는건 바람직 하지 않은 것 같다. 예외 하나에 문제가 망가질수도 ㅠㅠ... 1. 그냥저냥 내가 한번 풀어 본 것. def solution(A): # write your code in Python 3.6 length = len(A) if length == 0: return 1 elif length == 1: if A[0] == 1: return 2 else: return 1 A.sort() if A[0] != 1: return 1 for i in range(length): if A[i] + 1 == A[i+1]: if i == length ..
-
[python] Codility Lesson 3-1. FrogJmp공부/알고리즘 2021. 7. 24. 01:21
처음, while문을 통해서 남은 거리만큼 계속 더해주는 식으로 구현했는데 TimeOver에 걸려 (처음부터 사실 이렇게 하면 시간제한 걸릴거 같긴 했음) 귀찮아 하지말고 생각했을 때, 효율적인 방법이 있다면 적극 구현하자!! def solution(X, Y, D): # write your code in Python 3.6 if (Y - X) % D != 0: count = ((Y - X) // D) + 1 else: count = ((Y - X) // D) return count
-
[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리스트 사이..