[프로그래머스] 카펫 풀이
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/42842
2. 풀이
전체 직사각형과 노란 직사각형의 가능한 세로 크기를 모두 구한다.
하나씩 꺼내보면서 가로와 세로에 각각 -2 된 값보다 작거나 같은 경우(내부에 속하려면 전체 격자 크기의 가로, 세로 크기 -2보다 작거나 같아야 하기 때문)를 구해서 return
import math
def make_grid_num(rec_grid_num, start_idx): # 가능한 직사각형의 세로 크기를 모두 구한다.
sizes = []
half = (int)(math.sqrt(rec_...
[프로그래머스] 위장 풀이
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/42578
2. 풀이
해시를 사용하면 손쉽게 풀 수 있는 문제입니다.
딕셔너리에 옷 종류를 key로, 옷 이름은 집합 value에 넣어줍니다.
모든 값을 넣고 옷 종류마다 +1 을 해준 값을 정답해 곱해줍니다. (+1은 옷을 안 입는 경우입니다.)
-1 한 값을 정답으로 해줍니다(모두 벗은 경우)
def solution(clothes):
answer = 1
spy_dic = {}
for wear, kind in clothes: # 딕셔너리에 옷 종류를 key로 옷 이...
[프로그래머스] 큰 수 만들기 풀이
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/42883
2. 풀이
2.1. 시간 초과 풀이
만들어야 하는 자리 수는 number의 길이 - 빼야할 숫자 k 입니다.
숫자를 결정할 때 가장 높은 자리 숫자부터 정해야 합니다.
높은 자리 숫자는 현재 string 에서 최소한 빼야할 숫자 k - 1개 만큼이 뒤에 포함되어 있어야 합니다.
예를 들어, ‘2223454’ 에서 4개의 숫자를 빼야 되면 자리 수는 3자리이고, 첫 숫자는 뒤에 최소한 4 - 1 = 3개 만큼의 숫자 ‘454’ 앞에 있어야 하기 때문에 ‘222...
[프로그래머스] 피보나치 수 풀이
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/12945
2. 풀이
배열을 하나씩 증가시키면서 이전 수 2개를 더해주고 return 해주는 간단한 문제입니다.
def solution(n):
F = [0, 1]
for i in range(2, n+1):
F.append((F[i-1] + F[i-2]) % 1234567)
return F[n]
[프로그래머스] 전화번호 목록 풀이
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/42577
2. 풀이
2.1. 딕셔너리(해쉬)를 이용한 풀이
prefix_dic이라는 dictionary 에 모든 단어를 집어 넣습니다.
for문을 돌면서 문자 길이 -1 까지 체크를 하면서 dictionary에 해당 문자열이 존재하는지 확인합니다.
문자열의 길이가 20이 최대이기 때문에 속도에 문제가 없는 소스코드입니다.
def solution(phone_book):
answer = True
prefix_dic = {}
for x in phone_book:
...
What is mkdir -p option on linux?
When we use mkdir -p option, system automatically creates an intermediate directory that does not exist. If you use -p, you don’t need to make intermediate directory. Intermediate directories are created automatically. This is very useful.
# below command is not success because there is no middle directory(f1/f2)
$ mkdir f1/f2/f3
mkdir: f1/f2:...
[프로그래머스] 더 맵게
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/42626
2. 풀이
2.1. PriorityQueue를 이용한 시간초과 풀이
PriorityQueue 를 사용하여 문제를 해결한 풀이입니다.
문제 해결 방법은 아래와 같습니다.
PriorityQueue 에 남은 원소가 2개 이상일 경우에 계속해서 로직을 수행합니다.
가장 적은 2개를 뽑아서 2개 다 0이 아닌지 확인하고, 다음 값을 PriorityQueue에 집어 넣습니다.
while 문이 끝나고 나서 P...
[프로그래머스] 프린터 풀이
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/42586
2. 풀이
2.1. 덱을 이용한 풀이
1~9 까지 우선순위마다 값을 다르게 넣기 위한 덱 배열을 생성합니다. 이후 우선순위에 따라서 숫자를 집어 넣습니다.
우선순위 높은 덱부터 살펴봅니다. 이전에 살펴본 요소를 last_idx 로 표기해놓고, 해당 idx 이후에 실행될 요소를 찾습니다.
이후 큐에 있는 요소들을 순서대로 정답 배열에 집어 넣습니다.
정답 배열에서 location에 해당하는 요소를 찾아 정답으로 출력합니다.
from collections import deque
...
[프로그래머스] 기능개발
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/42586
2. 풀이
2.1. 내 풀이
각 프로세스마다 필요한 날을 올림 함수를 이용하여 구해줍니다.
이후로 배열을 하나하나씩 인덱스를 늘려가면서 시작 인덱스부터 뒤 인덱스에 같거나 작은 숫자가 올 때까지 같이 수행된 숫자로 여기고 정답에 집어 넣습니다.
import math
def solution(progresses, speeds):
need_day = [-1] * len(progresses)
for i in range(len(progresses)):
need_da...
[백준] 10830번 _ 행렬 제곱
1. 문제
https://www.acmicpc.net/problem/10830
2. 풀이
2.1. int 이중 포인터를 이용한 문제 풀이
행렬의 제곱수를 줄일 때(제곱수는 k라고 해보자)
제곱수가 홀수일 때는 -1을 해주어 $ A^{k - 1} * A $ 로 만들어 제곱수를 짝수로 만들어주고
제곱수가 짝수일 때는 /2를 해주어 $ A^{\frac{k}/{2}} $ 로 만들어 계산량을 줄입니다.
#define _CRT_SECURE_NO_WARNINGS
#include<algorithm>
#include<iostream>
using na...
879 post articles, 88 pages.