본문 바로가기
반응형

블로그 글161

[ Codility 코딜리티 ] Lesson 4 PermCheck Python 파이썬 // 문제 요약 주어진 배열이 permutation 인지 확인하고 맞으면 1 아니면 0을 반환해라. // 문제 풀이 permutation은 순열로 수학시간에 nPm 과 같이 쓰던 그걸 말한다. 여기서는 nPm일때 n=m인 경우를 말하고 1부터 A의 길이인 N 까지 모든 수를 한번씩만 사용해서 만든 순열을 의미한다. 비슷한 문제가 Lesson 3에서 한번 나온적이 있으므로 자세한 설명은 생략하도록 한다. 2021.04.17 - [Coding Test/Codility] - [ Codility 코딜리티 ] Lesson 3 PermMissingElem Python 파이썬 풀이 [ Codility 코딜리티 ] Lesson 3 PermMissingElem Python 파이썬 풀이 // 문제 요약 N개의 서로 다른 .. 2021. 4. 17.
[ codility 코딜리티 ] Lesson 4 MissingInteger Python 파이썬 풀이 // 문제 요약 N개의 정수로 구성된 배열 A를 받으면 A에 속해있지 않은 양의 정수 중 최소값을 구하는 함수를 짜라. // 물제 풀이 문제가 간단하다. 풀이도 간단할지 한번 보자. 우선은 양의 정수 중에서 최소값을 구하므로 A의 최대값이 음수인 경우는 무조건 1이 return되어야 한다. 그리고 중복된 값들은 그냥 지나가도 되므로 Counter의 key만을 이용할 수 있다는 것을 알 수 있다. 코드부터 한번 보자. # you can write to stdout for debugging purposes, e.g. # print("this is a debug message") import collections import sys def solution(A): # write your code in Pytho.. 2021. 4. 17.
[ Codility 코딜리티 ] Lesson 4 MaxCounters Python 파이썬 풀이 // 문제 요약 N개의 0으로 초기화되어있는 카운터가 주어진다. 이때 카운터에 할 수 있는 연산은 increase(X) : X번째 항에 1을 더한다 max counter : 카운터의 모든 항을 카운터의 현재 최대값으로 바꾼다. 이 두가지 뿐이다. M개의 정수로 구성되어 있고 비어있지 않은 배열 A가 주어지면 아래와 같은 연산을 수행한다. A[K] = X 인 경우 X가 1에서 N사이 일때 increas(X), A[K] = N+1 일때는 max counter. 위의 연산들이 주어졌을때 N과 A가 주어지면 최종적으로 얻어지는 카운터를 return하는 함수를 만들어라 // 문제 풀이 슬슬 문제들이 복잡하고 난해해지기 시작한다. 그래도 잘 한번 따라가 보자. 이런 류의 문제들은 기믹을 빨리 파악하는 것이 중요하다.. 2021. 4. 17.
[ Codility 코딜리티 ] Lesson 4 FrogRiverOne Python 파이썬 풀이 // 문제 요약 위치 0에서 폭이 X인 강을 건너 위치 X+1인 강의 반대쪽으로 가고자하는 개구리가 있다. 강물의 흐름을 무시할 수 있고 나뭇잎이 강 위로 떨어진다고 할때 (한번 떨어진 잎은 사라지지 않는다고 할때) 시간 K때 떨어진 나뭇잎의 위치는 A[K]이고 A는 N개의 정수로 구성된 비어있지 않은 배열이다. 1에서 X까지 모든 위치가 잎으로 채워지면 개구리가 건너갈 수 있다고 할 때 개구리가 강을 건널 수 있는 가장 빠른 시간을 구해라. 개구리가 강을 건널 수 없을 경우 -1을 return해라. // 문제 풀이 문제가 복잡하다. 하지만 간단하게 생각할 경우 "X 가 주어지면 1에서 X까지 한번 이상 등장하는 가장 작은 K를 구해라" 로 문제가 요약된다. 이렇게 핵심만 남기는 것이 실재로 개구리가 강.. 2021. 4. 17.
[ Codility 코딜리티 ] Lesson 3 TapeEquilibrium Python 파이썬 풀이 // 문제 요약 비어 있지 않고 N개의 정수로 이루어진 배열 A가 주어질때 A가 한 테이프를 따라 매겨진 번호라고 하자. 0과 N 사이의 정수 P가 주어지면 A[0 ~ P-1], A[P ~ N-1] 으로 테이프를 나눈다고 할때 나누어진 두 테이프에 매겨진 값을 각각 모두 더하여 얻어진 두 값의 가장 작은 absolute difference는 얼마인가? // 풀이 이런 문제는 자칫 영어가 꼬이면 문제를 이해하는데 시간을 낭비하고 만다. 따라서 꼼꼼하게 차근차근 본문을 잘 읽어서 문제를 정확하게 이해해야 한다. 우선은 p를 옮겨가면서 p가 옮겨질때마다 양쪽을 모두 더하는 경우로 생각하기 쉬우나 그렇게 되면 p를 옮기기위해 N번 그리고 임의의 p에서 덧셈을 N번 하는 경우기 때문에 O(N**2)이 된다. 코딩.. 2021. 4. 17.
[ Codility 코딜리티 ] Lesson 3 PermMissingElem Python 파이썬 풀이 // 문제 요약 N개의 서로 다른 정수들로 구성된 배열 A가 주어진다. 배열에 들어있는 정수들은 [1, (N+1)]의 범위를 가지며 정확히 하나의 원소가 사라져있다. 사라진 원소를 찾는 함수를 구현해라. // 풀이 이 문제는 collections페키지에 있는 Counter()를 알면 쉽게 풀리고 모르면 생각을 좀 해야할 수도 있는 문제다. 각 플랫폼마다 다르긴 하지만 코딜리티의 경우는 collections를 지원하고 있다. 따라서 이러한 점을 미리 파악하고 시험에 임하는 것이 더 많은 무기를 가지고 전장에 임하는 것과 같다. Counter()는 리스트를 입력받아서 element : the number of element 의 맵핑을 가지는 딕셔너리로 반환해준다. 코드를 보자. # you can write .. 2021. 4. 17.
반응형