Home

[프로그래머스] 카펫 풀이

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_...

Read more

[프로그래머스] 위장 풀이

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로 옷 이...

Read more

[프로그래머스] 큰 수 만들기 풀이

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...

Read more

[프로그래머스] 피보나치 수 풀이

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]

Read more

[프로그래머스] 전화번호 목록 풀이

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: ...

Read more

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:...

Read more

[프로그래머스] 더 맵게

1. 문제 https://programmers.co.kr/learn/courses/30/lessons/42626 2. 풀이 2.1. PriorityQueue를 이용한 시간초과 풀이 PriorityQueue 를 사용하여 문제를 해결한 풀이입니다. 문제 해결 방법은 아래와 같습니다. PriorityQueue 에 남은 원소가 2개 이상일 경우에 계속해서 로직을 수행합니다. 가장 적은 2개를 뽑아서 2개 다 0이 아닌지 확인하고, 다음 값을 PriorityQueue에 집어 넣습니다. while 문이 끝나고 나서 P...

Read more

[프로그래머스] 프린터 풀이

1. 문제 https://programmers.co.kr/learn/courses/30/lessons/42586 2. 풀이 2.1. 덱을 이용한 풀이 1~9 까지 우선순위마다 값을 다르게 넣기 위한 덱 배열을 생성합니다. 이후 우선순위에 따라서 숫자를 집어 넣습니다. 우선순위 높은 덱부터 살펴봅니다. 이전에 살펴본 요소를 last_idx 로 표기해놓고, 해당 idx 이후에 실행될 요소를 찾습니다. 이후 큐에 있는 요소들을 순서대로 정답 배열에 집어 넣습니다. 정답 배열에서 location에 해당하는 요소를 찾아 정답으로 출력합니다. from collections import deque ...

Read more

[프로그래머스] 기능개발

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...

Read more

[백준] 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...

Read more