본문 바로가기

All posts123

[프로그래머스] 완전탐색 : 카펫 문제 설명 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한 사항 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다. 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다. 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다.. 2021. 7. 13.
[프로그래머스] 탐욕법(Greedy) : 구명보트 문제 설명 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번째 사람은 같이 탈 수 있지만 1번째 사람과 3번째 사람의 무게의 합은 150kg이므로 구명보트의 무게 제한을 초과하여 같이 탈 수 없습니다. 구명보트를 최대한 적게 사용하여 모든 사람을 구출하려고 합니다. 사람들의 몸무게를 담은 배열 people과 구명보트의 무게 제한 limit가 매개변수로 주어질 때, 모든 사람을 구출하기 위해 필요한 구명보트 개수의 최솟값을 return 하도록 solution 함수를 작성해주세요.. 2021. 7. 13.
[프로그래머스] N개의 최소공배수 문제 설명 두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요. 제한 사항 arr은 길이 1이상, 15이하인 배열입니다. arr의 원소는 100 이하인 자연수입니다. 입출력 예 arr result [2,6,8,14] 168 [1,2,3] 6 나의 솔루션 두 수의 최소공배수를 구하는 방법은 두 수를 곱한 값에 두 수의 최대공약수를 나누는 것이다. 이를 배열.. 2021. 7. 13.
[프로그래머스] 해시: 위장 문제 설명 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 종류 이름 얼굴 동그란 안경, 검정 선글라스 상의 파란색 티셔츠 하의 청바지 겉옷 긴 코트 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요. 제한 사항 clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다. 스파이가 가진 의상의 수는 1개 이상 30개 이하입니다. 같은 이름을 가진 의상은 존재하지 않습니다. clot.. 2021. 7. 13.
[프로그래머스] 정렬: 가장 큰 수 문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. 제한 사항 numbers의 길이는 1 이상 100,000 이하입니다. numbers의 원소는 0 이상 1,000 이하입니다. 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다. 입출력 예 numbers return [6, 10, .. 2021. 7. 13.
[프로그래머스] 완전탐색: 소수찾기 문제 설명 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요. 제한 사항 numbers는 길이 1 이상 7 이하인 문자열입니다. numbers는 0~9까지 숫자만으로 이루어져 있습니다. "013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다. 입출력 예 numbers return "17" 3 "011" 2 입출력 예 설명 예제 #1: [1, 7]으로는 소수 [7, 17, 71]를 만들 수 있습니다. 예제 #2: [0, 1, 1]으로는 소수 [1.. 2021. 7. 13.
[Database] DB 패러다임 (Paradigm) 이란? ✨ DB 패러다임의 필요성 DB 패러다임이란 DB 를 저장하고 관리하는 방법을 의미한다. 각 패러다임마다 최적의 사용 환경과 조건이 존재한다. 차례로 여러 DB 패러다임을 소개해본다. ✨ 1. Key-Value DB DBMS: Redis, Memcached, Etcd 등 특징: Javascript 의 object 또는 python 의 dictionary 데이터 타입과 비슷하다. 유일한 key 값이 존재하며, 각 key에 상응하는 value 를 가진 데이터 구조이다. 장점: 대부분의 다른 DB 는 디스크에 저장되지만, Key-Value DB 메모리에 저장된다. 모든 작업마다 디스크에 접근하지 않아도 되기 때문에 속도가 굉장히 빠르다. 단점: 저장할 수 있는 데이터의 용량에 한계가 있다. 쿼리를 지원하지 않.. 2021. 7. 8.
[Algorithms] 시간복잡도 (Big-O Notation) 란? ✨ 시간복잡도 알고리즘의 로직을 코드로 구현할 때, 입력값에 따라 출력값을 내는데 걸리는 시간의 비율을 의미한다. 시간 복잡도는 보통 Big-O Notation (Big-O 표기법) 을 활용하여 나타낸다. Big-O Notation 이외에도 Big-Omega(big-Ω),Big-Theta(big-Θ) Notation 등이 존재한다. Big-Omega는 알고리즘 효율을 하한선을 기준으로 하고, Big-Theta는 상한선과 하한선의 사이를 기준으로 판단한다. 이에 비해 Big-O 는 알고리즘 효율을 상한선 기준으로 표기하기 때문에 자주 사용된다. 즉, 알고리즘을 실행하는데 걸리는 시간의 최대값을 표기하기 때문에 효율성 점검에 자주 사용된다. 시간 복잡도와 아울러 공간 복잡도 (Space Complexity).. 2021. 7. 8.
[프로그래머스] 2021 Dev-Matching: 웹 백엔드 개발자(상반기) : 행렬 테두리 회전하기 문제 설명 및 입출력 예: 링크 참조 https://programmers.co.kr/learn/courses/30/lessons/77485 나의 솔루션 당연히 처음에는 2 차원 배열을 만들어 인덱스를 하나하나 조회하며 변경할 생각을 했으나, 이는 실행시간도 오래 걸리고 복잡하다는 생각이 들었다. 그래서 2차원 배열을 1차원 배열과 같이 늘어놓는다 해도, 인덱스 값으로 접근하여 원하는 작업을 할 수 있지 않을까? 하는 고민을 시작으로 1차원 배열을 활용하여 문제를 풀어 보았다. (그런데 됐다. 왜 되지..) 단순히 말하자면, [ [1,2,3], [4,5,6], [7,8,9] ] # 이러한 2차원 배열의 형태를 [ 1,2,3,4,5,6,7,8,9 ] # 1차원 배열의 형태로 만들어 해결하겠다는 뜻이다. 작업.. 2021. 7. 8.