프로그래머스의 레벨 2 문제 숫자 카드 나누기입니다. 문제 요구 조건 배열 A, B가 있을 때 A 원소들의 공약수이면서 B 원소들은 하나도 나눌 수 없는 수 중에서 가장 큰 수를 구하고, B 원소들의 공약수이면서 A 원소들은 하나도 나눌 수 없는 수 중에서 가장 큰 수를 구해서 더 큰 수를 리턴해야 합니다. 내 풀이 방법 배열의 범위가 크고 원소 값의 범위도 크기 때문에 완전탐색으로 해결할 수 없는 문제라고 생각했습니다. 탐색 시간을 줄이기 위해서 각 배열에서 가장 작은 수의 약수만 구합니다. 구한 약수들을 큰 순서대로 탐색하면서 조건에 맞는지 확인합니다. # 배열의 길이가 50만, 원소의 범위는 1~1억이다. # 이걸 일일이 확인하면 시간 내에 풀 수 없다. # 시간을 단축하는 방법으로, 나눌 수 있는..
Computer science/Algorithm
프로그래머스의 레벨 2 문제 귤 고르기입니다. 문제 요구 조건 k개의 귤을 선택할 때 서로 다른 종류의 수를 최소화하는 것입니다. 서로 다른 종류의 수를 최소화하기 위해서 동일한 종류의 귤이 많은 순서대로 선택하면 풀 수 있습니다. 내 풀이 방법 동일한 종류의 귤이 많은 순서를 알기 위해서 귤 배열을 순회하면서 딕셔너리에 키를 종류로, 갯수를 값으로 저장합니다. 딕셔너리를 값을 기준으로 정렬하고 순회합니다. 이때, k -= value, answer += 1는 귤 1종류를 추가하는 것이고, k가 0이하라면 다 추가한 것이니 answer를 리턴합니다. # 1. 가장 많이 등장한 순서대로 정렬 # 2. k개만큼 세면서 종류 몇가진지 체크 def solution(k, tangerine): answer = 0 d..