전체 글 252

(보충필요)99클럽 코테 스터디 7일차 TIL + 프로그래머스/2/42746. 가장 큰 수

문제 설명0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.제한 사항numbers의 길이는 1 이상 100,000 이하입니다.numbers의 원소는 0 이상 1,000 이하입니다.정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.입출력 예numbersreturn[6, 10, 2]"6210"[3,..

99클럽 코테 스터디 6일차 TIL + 2413/Smallest Number in Infinite Set

2413. Smallest Number in Infinite SetMediumYou have a set which contains all positive integers [1, 2, 3, 4, 5, ...].Implement the SmallestInfiniteSet class:SmallestInfiniteSet() Initializes the SmallestInfiniteSet object to contain all positive integers.int popSmallest() Removes and returns the smallest integer contained in the infinite set.void addBack(int num) Adds a positive integer num back ..

99클럽 코테 스터디 5일차 TIL + 프로그래머스/2/42626. 더 맵게

문제 설명매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다.섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2)Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다.Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 solution 함수를 작성해주세요.제한 사항scoville의 길이..

99클럽 코테 스터디 4일차 TIL + 프로그래머스/2/12909. 올바른 괄호

문제 설명괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어"()()" 또는 "(())()" 는 올바른 괄호입니다.")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.제한사항문자열 s의 길이 : 100,000 이하의 자연수문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.입출력 예sanswer"()()"true"(())()"true")()("false"(()("false입출력 예 설명입출력 예 #1,2,3,4문제의 ..

99클럽 코테 스터디 3일차 TIL + 프로그래머스/2/42586. 기능개발

git문제 설명프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다.또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다.먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요.제한 사항작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다.작업 진도는 100 미만의 자연수입니다.작업 속도는 100 이하의 자연수입니..

99클럽 코테 스터디 2일차 TIL + 프로그래머스/2/42578. 의상

문제 설명코니는 매일 다른 옷을 조합하여 입는것을 좋아합니다.예를 들어 코니가 가진 옷이 아래와 같고, 오늘 코니가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야합니다.종류이름얼굴동그란 안경, 검정 선글라스상의파란색 티셔츠하의청바지겉옷긴 코트코니는 각 종류별로 최대 1가지 의상만 착용할 수 있습니다. 예를 들어 위 예시의 경우 동그란 안경과 검정 선글라스를 동시에 착용할 수는 없습니다.착용한 의상의 일부가 겹치더라도, 다른 의상이 겹치지 않거나, 혹은 의상을 추가로 더 착용한 경우에는 서로 다른 방법으로 옷을 착용한 것으로 계산합니다.코니는 하루에 최소 한 개의 의상은 입습니다.코니가 가진 의상들이 담긴 2차원 배열 c..

99클럽 코테 스터디 1일차 TIL + 프로그래머스/2/42577. 전화번호 목록/

# [level 2] 전화번호 목록 - 42577[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/42577) 문제 설명전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다.전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다.구조대 : 119박준영 : 97 674 223지영석 : 11 9552 4421전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요.제한 사항phone_b..

Hash Table 정리

Hash Table 탄생 배경 Direct Access Table 인 배열인덱스 방식으로, key-value쌍을 가져올 때 시간효율은 O(1)이므로 빠르다. 하지만 사용하지 않는 index에 대한 공간낭비가 상존함 1. 해시 함수의 조건 (1) 의의 특정 값을 원하는 범위의 자연수로 바꿔주는 함수 (2) 조건 1) 한 해시테이블의 해시 함수는 결정론적이어야 한다 같은 key 는 같은 결과가 나와야함 2) 결과 해시값이 치우치지 않고 고르게 나온다 각 리턴 값이 나올 확률이 비슷해야한다 3) 빠르게 계산 할 수있어야한다. 해시테이블은 연산할 때 마다 해시함수 사용함. 본 함수가 비효율적이면 해시테이블도 비효율적임 2. 해시함수 만들기 (1) 나누기 방법 자연수 key를 해시테이블의 크기로 나눈 나머지를 리..

알고리즘 3줄 정리 [DP : Memoization, ]

Dynamic Programming - Memoization 정리 핵심개념 피보나치 수열의 동적 프로그래밍과 메모이제이션 방식의 핵심은 중복 계산을 방지하기 위해 캐시를 사용하여 이미 계산된 값을 저장하고 재사용함으로써, 재귀 호출의 효율성을 높이고 시간 복잡도를 지수적인 O(2^n) 에서 선형적인 O(n)으로 줄이는 데에 있습니다. 기저 사례를 적절히 처리하여 재귀 호출의 종료 조건을 제공하며, 이를 통해 계산 속도를 크게 향상시킵니다.

알고리즘 3줄 정리 [합병정렬, 퀵정렬]

Divid and Conquer 의 형제 합병정렬 정리 핵심개념: 리스트를 반으로 나누고, 각 부분을 재귀적으로 정렬한 다음, 두 부분을 합병합니다. 시간복잡도: 최선, 평균, 최악 모두 O(nlogn) → + : 일관된 시간복잡도 공간복잡도: O(n) (추가 배열을 사용하기 때문에) → - : 추가 메모리 필요 퀵정렬 정리 핵심개념: 피벗을 선택하여 이보다 작은 요소와 큰 요소를 분할한 후(파티션), 각 부분을 재귀적으로 정렬합니다. 시간복잡도: 평균 O(nlogn), 최악 O(n2) (피벗 선택에 따라 달라짐) → + 평균적으로 빠름, 최악 크게 증가 공간복잡도: 평균 O(logn) (재귀의 깊이), 최악의 경우 O(n) (피벗 선택이 최악일 때) → + 추가 메모리 적게 소모 이름이 퀵정렬인 이유 ..