목록Computer Science/Algorithm (20)
고딩왕 코범석

[프로그래머스] 징검다리 건너기, Python3 문제 링크! 제한사항 및 유의사항 stones 배열의 크기는 1 ~ 200,000 stones 배열의 각 원소의 크기는 1 ~ 200,000,000 위의 두가지 때문에 모든 경우의 수를 체크하기엔 효율성 채점에서 시간 초과 판정을 받을 것이다. 친구들은 k를 넘은 칸 만큼 건널 수 없다. k는 1 이상 stones길이 이하 자연수 풀이전략 시간 초과 판정을 피하기 위해 이분 탐색으로 접근하자 접근 시 탐색 기준값(mid)의 의미는 징검다리를 건널 수 있는 친구들의 수를 의미한다. start = 1, end = max(stones) start = 1인 이유 : 모든 stones[i] >= 1 임을 만족하므로 mid = (start + end) // 2 매번 ..

[프로그래머스] 보석 쇼핑, Python3 [프로그래머스] 보석 쇼핑 문제 제한사항 어피치는 우선 일렬로 보석들을 한줄에 싹 쓸어담아 구매한다. 배열의 구간을 띄워서 사지 않는다! solution의 매개변수인 gems(보석 진열 배열)의 크기가 100,000 까지이다. 100,000의 크기를 하나씩 일렬로 검사하는 것은 O(n * n)이므로 시간 초과가 발생할 것이다. 풀이전략 먼저, 보석의 종류를 파악하기 set(gems)를 활용해 보석의 종류 수를 파악하기 만약 종류가 1가지일 경우는 [1, 1] / 종류의 수와 배열의 크기가 같다면 [1, len(gems)]를 바로 리턴쳐주자. dict 선언하기 { "보석" : 해당 보석의 갯수 } 의 형태 start, end 포인트를 지정하자. start, end..

이번 포스팅에서는 2020 카카오 인턴십 코딩테스트 문제 중 두 번째 문제인 수식 최대화 문제에 대해 풀이를 해볼 것이다. 문제 설명 제한 사항 테스트케이스 문제는 여기로! 우선 나는 이 문제를 어떻게 풀지 몰라 감이 안잡혀 다른 분의 코드를 참조했다.거의 베낀 것이나 다를바 없다 그치만 코드를 하나씩 살펴보면서 재귀에 대한 이해, 재귀를 사용할 때 코드의 간결함을 보고 많이 배운 코드였다. 풀이 방법 priorities 라는 배열을 선언했다. 이곳에는 연산자들의 우선순위를 담아두었다. priorities에 있는 우선순위들을 하나씩 대입하여 해당 연산의 결과를 얻어낸다. 연산 결과를 절댓값으로 바꾸어 최댓값을 비교하고 정답을 리턴한다. def get_result(n, priority, expression..

이번 포스팅에서는 2020 카카오 인턴십 코딩테스트 문제 중 첫 번째 문제인 키패드 누르기 문제에 대해 풀이를 해볼 것이다. 나의 풀이 방법 키패드를 딕셔너리로 표현했다. 문제에서 1,4,7 은 왼손, 3,6,9는 오른손으로 눌러야하기 때문에 left, right 라는 배열을 만들어서 저장해두었다. 2,5,8,0을 누를 때 마다 왼손, 오른손의 거리를 비교해야 한다. 이 때를 위해 현재 왼쪽, 오른쪽의 위치를 저장해두는 변수를 설정했다. (초기값 왼쪽 : *, 오른쪽 : #) 현재 손가락의 위치에서 누를 번호까지의 거리를 계산하는 메서드를 따로 작성했다. 거리가 같다면 hand 변수에 써있는 값을 통해 왼손으로 누를지, 오른손으로 누를지 결정한다. def get_distance(now, destinati..