문제 https://app.codility.com/programmers/lessons/4-counting_elements/perm_check/ 리스트의 값이 순열인지 확인하는 문제이다. 문제 풀이 Missing Integer와 동일한 방식으로 풀면 된다. 코드 def solution(A): sort = sorted(A) check_num = 1 for num in sort: if num == check_num: check_num += 1 return 1 if len(A) == check_num - 1 else 0
문제 https://app.codility.com/programmers/lessons/4-counting_elements/missing_integer/ 리스트가 주어지면, 리스트의 존재하지 않는 값을 찾거나 리스트에 값이 모두 존재하는 경우에는 다음의 수를 반환한다. 리스트에 음수만 존재하는 경우에는 1을 반환한다. 문제 풀이 정렬하지 않고 문제를 풀려고 했을때는 체크 리스트를 활용하고, 코드도 보기 흉하게 변했다. 하지만 정렬을 사용하면 아주 간단한게 문제를 해결할 수 있다. 코드 def solution(A): sort = sorted(A) lost = 1 for num in sort: if num == lost: lost += 1 return lost
문제 https://app.codility.com/programmers/lessons/4-counting_elements/max_counters/ 리스트의 값이 N이하 일 경우에는, 해당하는 인덱스의 값을 1 증가시키고 N보다 큰 값인 경우에는 모든 인덱스 값을 현재 값의 max로 변경한다. 문제 풀이 각 인덱스에 값을 추가하다가, N보다 큰 값이 발생한 경우 answer = max(answer) * N로 처리하였더니 효율성을 통과하지 못하였다. def solution(N, A): answer = [0] * N for idx in A: print(answer) if idx > N: answer = [max(answer)] * N else: answer[idx - 1] += 1 return answer 코..
문제 https://app.codility.com/programmers/lessons/4-counting_elements/frog_river_one/ 개구리가 가고자 하는 위치가 X라면, X에 도달하기 위해 필요한 모든 구간을 거쳐야 한다. 문제 풀이 카운트와 체크 리스트를 활용하여서 문제를 풀면 쉽게 풀 수 있다. 코드 def solution(X, A): check = [False] * X cnt = 0 for i in range(len(A)): if not check[A[i] - 1]: check[A[i] - 1] = True cnt += 1 if cnt == X: return i return -1 지나온 구간을 확인하기 위해 체크리스틀 통해 확인한다. 카운트를 활용해 카운트 값이 가고자 하는 위치와..