전체 글

·TIL
🔗 프로그래머스 - 타켓 넘버재귀로 풀었다!!각 숫자 사이에 + 또는 - 연산자를 넣어줘야 하는데재귀로 돌면서 디시전 트리 도는 것 처럼 + , - 를 선택하고 마지막 숫자까지 갔을때 target과 같으면 count += 1를 해줘서 답을 얻었다.def solution(numbers, target): def choose(idx, num_sum): if idx == len(numbers): if num_sum == target: return 1 return 0 return choose(idx + 1, num_sum + numbers[idx]) + choose(idx + 1, num_sum - numbers[i..
·자료구조
배웠으나 까먹고 또 배웠으나 헷갈리는 그래서 정리해 둬야겠다.이미 배웠던 분들이 복기하는 용도로 사용하면 좋을 것 같다. 시간 복잡도 ⍬(n2 )[정렬되지 않은 리스트의 크기를 n부터 시작해 하나씩 줄임]Selection sort( 선택 정렬 ) : 제일 큰(작은) 수를 찾아서 제일 뒤(앞)로 보내기코드보기def selectionSort(A): for i in range(0, len(A)-1): min_num = i for j in range(i + 1, len(A)): if A[j] Bubble sort( 버블 정렬 ) : 2개씩 비교해 가면서 큰 수가 점점 뒤로 가게 하기코드보기def bubbleSort(A): for i in range(len(..
·TIL
🔗 프로그래머스 - 소수찾기멍청 이슈로 너무 오래 풀었다...문제 풀이 과정은 다음과 같다.종이 조각들을 조합할 수 있는 모든 경우의 수를 구한다. 숫자로 변환 후 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..
·TIL
🔗 프로그래머스 - 카펫이 문제는 연립 일차 방정식을 푸는 문제다.  노란색 부분의 가로를 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..
·TIL
🔗 프로그래머스: 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..
·TIL
🔗 프로그래머스 - 가장 큰 수시간이 오래 걸렸다 ㅠㅠㅠㅠ 처음 시작할 때는 호기롭게 시작했는데 테스트에서 와장창 틀려버렸다.1~6 테스트 케이스를 계속 통과 못하다가 했다. 제일 문제였던 2가지 점에 대해서 기록해 보겠다.우선 정렬이 필요한데 조건이 조금 까다롭다. 1. '23' 와 '2313' 일 때 - 즉 왼쪽부터 같은 숫자가 나오다가 다른 경우 '23'을 '2313'과 같은 자릿 수가 되도록 이어 붙였다. 결국 자릿수가 중요하기 때문이다.'2323' 과 '2313'을 비교해보면 '2323'이 더 크므로 '23'+'2313' = '232313' 이 제일 크다ex) '85' 와 '8593'을 비교할 때 '8585' 는 '8593'보다 작으므로 '8593' + '85' = '859385' 가 답이다...
·TIL
🔗 2336. Smallest Number in Infinite Set이 문제 또한 heap 을 사용하면 훨씬 실행속도가 빨랐다. 1~1000 의 숫자가 있는 set 에서 popSmallest 를 하면 가장 작은 숫자를 반환하고addBack 을 하면 숫자를 추가한다. 당연히 집합이므로 같은 숫자는 들어갈 수 없어야 한다.min( ) 으로 최소값을 찾았을 때 실행속도가 상당히 느렸다.heapq를 사용하면 속도가 빨라졌으나 나보다 빠른 사람들이 훨씬 많았다heapq를 사용하면서 Counter를 사용한 예시를 봐서 따라해 봤는데 더 빨라졌다. Counter 란? 🙄 - 출처: 파이썬 공식문서                   Counter 란 hashable 한 object를 count 하는 dict의 su..
·TIL
🔗 프로그래머스 - 디스크 컨트롤러운영체제 수업때 했던 내용이었으나 또 삽질을 했다.정리하자면,하드디스크가 놀고 있을 때에는 먼저 요청된 작업부터 진행한다. - jobs 를 sort 해야 한다는 뜻하드디스크가 작업중일 때 요청이 들어오는 경우 작업 시간이 짧은 작업 순서로 대기열에 들어간다. - heap을 이용해 우선순위 정렬 삽질 했던 부분은대기열에 삽입 할 때, 요청된 시간 보다 현재 시간이 클 때로 잘못 적어놔서 (요청 시간 > time) 계속 틀렸었다 ▶ 부등호 잘 보기작업 시간이 0일 때 처리를 해주지 않아 틀렸었다. 처음 jobs를 sort 하지 않아 틀렸었다.  + 다른 분이 푸신 방법 중에 데크를 사용한 방법이 있었다. 실행속도가 굉장히 빨랐다. 데크는 처음 들어봐서 정리해 봤다.dequ..
yolang
프로그래밍 기록장