공부/알고리즘
-
[python] Codility Lesson 5-1. CountDiv공부/알고리즘 2021. 7. 26. 03:01
그냥 보자마자 반사적으로 아래와 같이 짜보았다. 문제 조건을 보니 아래와 같이 연산 낭비가 있으면 안될거 같긴했지만 그냥 제출해본 결과 50점을 받았다. 1. 그냥 한번 짜봄. def solution(A, B, K): # write your code in Python 3.6 answer = 0 for i in range(A,B+1): if i % K == 0: answer += 1 else: continue return answer codility lesson 문제를 풀며 해당 lesson의 제목에 대한 공부를 좀 진행하고 거기에 맞추어서 코드를 작성하기로 마음을 고쳐 먹었다. 진작에 이랬어야 됫는데, 그냥 무조건 풀수있다는 자신감으로 풀면 별 도움도 안되고 여튼 lesson 5부터 공부하며 풀어보자!!..
-
[python] Codility Lesson 4-4. PermCheck공부/알고리즘 2021. 7. 25. 22:40
이전 문제와 비슷한 초기 비교값 permutation_start 값을 1로 두고, 비교 및 카운팅을 통해서 무난하게 해결해 보았다. def solution(A): # write your code in Python 3.6 A.sort() permutation_start = 1 for val in A: if val == permutation_start: permutation_start += 1 else: return 0 return 1 1. list A를 sort()하자! 2. 초기 비교값 permutation_start 값을 1로 두고, 비교 및 카운팅을 통해서 permutation_start를 갱신해주자 3. 비교값이 sort된 list A 값과 다를 시 return 0, for 문의 검사가 끝났을때 r..
-
[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