🔗 프로그래머스 - 소수찾기멍청 이슈로 너무 오래 풀었다...문제 풀이 과정은 다음과 같다.종이 조각들을 조합할 수 있는 모든 경우의 수를 구한다. 숫자로 변환 후 set 안에 넣어 중복되는 경우의 수를 삭제한다.소수 인지 확인한다.여기에서 라이브러리를 사용하지 않았다가 삽질 했다. 앞으로도 자주 사용하게 될거 같아 기록해 놔야겠다. Python itertools순열과 조합 함수를 포함해 여러 iteration 를 만들어 준다. count() : count(10) → 10 11 12 13 14 ...accumulate() : accumulate([1,2,3,4,5]) → 1 3 6 10 15chain() : chain('ABC', 'DEF') → A B C D E Fproduct('ABCD', repe..
🔗 프로그래머스 - 카펫이 문제는 연립 일차 방정식을 푸는 문제다. 노란색 부분의 가로를 x, 세로를 y라고 하면x >= y 이여야 하고 x * y = yellow , 2 * (x + 2) + 2 * y = brown 이다여기에서 파이썬 symPy라는 라이브러리를 발견해 적어보려고 한다.코테에서는 사용이 아마 불가하겠지만 유용한거 같아 기록해본다!!symPY 는 수학 라이브러리로 다항식과 같이 수학연산을 하기 위한 라이브러리다.이 라이브러리를 사용하여 문제를 풀면 import sympydef solution(brown, yellow): answer = [] # 노란색 부분의 가로를 x, 세로를 y라고 하면 # x >= y 이여야 하고 x * y = yellow , 2 * (x + 2..
🔗 프로그래머스: H-indexh-index 조건을 제대로 이해하는 것이 중요하겠다. n개의 논문이 있을 때1. h번 이상 인용된 논문의 수가 h 이상일 것2. 그 나머지 논문의 수가 h 번 이하로 인용 되었을 것 "나머지 논문"을 잘 읽지 않고, h번 이하로 인용된 논문이 h개 이하일 것으로 생각해서 삽질 했다. ☹️코드 자체는 위의 조건을 그대로 잘 적으면 되는 데 filter 를 사용해서 풀었다. def solution(citations): citations.sort() h = citations[len(citations) // 2] length = len(citations) bigger_equal = len(list(filter(lambda x: x >= h, citation..
🔗 프로그래머스 - 가장 큰 수시간이 오래 걸렸다 ㅠㅠㅠㅠ 처음 시작할 때는 호기롭게 시작했는데 테스트에서 와장창 틀려버렸다.1~6 테스트 케이스를 계속 통과 못하다가 했다. 제일 문제였던 2가지 점에 대해서 기록해 보겠다.우선 정렬이 필요한데 조건이 조금 까다롭다. 1. '23' 와 '2313' 일 때 - 즉 왼쪽부터 같은 숫자가 나오다가 다른 경우 '23'을 '2313'과 같은 자릿 수가 되도록 이어 붙였다. 결국 자릿수가 중요하기 때문이다.'2323' 과 '2313'을 비교해보면 '2323'이 더 크므로 '23'+'2313' = '232313' 이 제일 크다ex) '85' 와 '8593'을 비교할 때 '8585' 는 '8593'보다 작으므로 '8593' + '85' = '859385' 가 답이다...
🔗 2336. Smallest Number in Infinite Set이 문제 또한 heap 을 사용하면 훨씬 실행속도가 빨랐다. 1~1000 의 숫자가 있는 set 에서 popSmallest 를 하면 가장 작은 숫자를 반환하고addBack 을 하면 숫자를 추가한다. 당연히 집합이므로 같은 숫자는 들어갈 수 없어야 한다.min( ) 으로 최소값을 찾았을 때 실행속도가 상당히 느렸다.heapq를 사용하면 속도가 빨라졌으나 나보다 빠른 사람들이 훨씬 많았다heapq를 사용하면서 Counter를 사용한 예시를 봐서 따라해 봤는데 더 빨라졌다. Counter 란? 🙄 - 출처: 파이썬 공식문서 Counter 란 hashable 한 object를 count 하는 dict의 su..
🔗 프로그래머스 - 디스크 컨트롤러운영체제 수업때 했던 내용이었으나 또 삽질을 했다.정리하자면,하드디스크가 놀고 있을 때에는 먼저 요청된 작업부터 진행한다. - jobs 를 sort 해야 한다는 뜻하드디스크가 작업중일 때 요청이 들어오는 경우 작업 시간이 짧은 작업 순서로 대기열에 들어간다. - heap을 이용해 우선순위 정렬 삽질 했던 부분은대기열에 삽입 할 때, 요청된 시간 보다 현재 시간이 클 때로 잘못 적어놔서 (요청 시간 > time) 계속 틀렸었다 ▶ 부등호 잘 보기작업 시간이 0일 때 처리를 해주지 않아 틀렸었다. 처음 jobs를 sort 하지 않아 틀렸었다. + 다른 분이 푸신 방법 중에 데크를 사용한 방법이 있었다. 실행속도가 굉장히 빨랐다. 데크는 처음 들어봐서 정리해 봤다.dequ..
🔗 프로그래머스 - 더 맵게 힙을 사용해야 시간 초과가 일어나지 않는 문제였다. 파이썬 공식 문서>heapq.heappush(heap, item)힙 불변성을 유지하면서, item 값을 heap으로 푸시합니다.heapq.heappop(heap)힙 불변성을 유지하면서, heap에서 가장 작은 항목을 팝하고 반환합니다. 힙이 비어 있으면, IndexError가 발생합니다. 팝 하지 않고 가장 작은 항목에 액세스하려면, heap[0]을 사용하십시오.heapq.heappushpop(heap, item)힙에 item을 푸시한 다음, heap에서 가장 작은 항목을 팝하고 반환합니다. 결합한 액션은 heappush()한 다음 heappop()을 별도로 호출하는 것보다 더 효율적으로 실행합니다.heapq.heapif..
🔗 올바른 괄호스택을 사용하는 문제였습니다.1. 처음에는 for s in string: if s == '(': count += 1 if s == ')': count -= 1 if count 이런 식으로 count 가 stack의 top pointer 역할을 하도록 시도해 봤고 2. 스택을 활용해 봤으나 빈 배열에서 pop 할때를 처리해 주지 않아 오류가 났습니다. 3. 마지막은 중간에 스택이 비었을 때는 False를 return 하게 처리했으나 다른 분의 코드를 보니 try, except 문으로 처리하는 게 더 나을 것 같다는 생각을 했습니다. 느낀점 : 오랜만에 파이썬을 쓰니 익숙하지 않은 것들이 참 많다.😁