세상을 더 편리하게
article thumbnail
[프로그래머스 / Swift] 택배 배달과 수거하기

https://school.programmers.co.kr/learn/courses/30/lessons/150369 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 접근 문제를 보고 그리디로 접근해야겠다. 라는 느낌은 왔다. 하지만 어떻게 그리디를 구현하냐가 문제였다. 가장 먼 곳부터 해결해야 하는 것은 알겠는데 출발 할 때에 물류창고에서 택배차 설정을 어떻게 해야하지? 너무 많이 가져가면 가장 먼 곳의 빈 택배박스를 회수 못할 경우가 생긴다. -> 한 번 더 왕복해야 한다. 너무 적게 가져가면 택배를 건네주기 위해서 다시 왕복해야 한다. 이게 ..

[BOJ 12015/파이썬]가장 긴 증가하는 부분 수열2
알고리즘/BOJ 2021. 8. 31. 23:05

0. 문제 링크 https://www.acmicpc.net/problem/12015 1. 문제 2. 문제해결 알고리즘 이분탐색 바이토닉 정렬 3. 문제 해결 및 코드 이 문제의 핵심은 부분 수열이 아니라 부분 수열의 개수이다. import sys from bisect import bisect_left input = sys.stdin.readline def main(): N = int(input()) arr = list(map(int, input().split())) stack = [0] for n in arr: if stack[-1] < n: stack.append(n) else: stack[bisect_left(stack, n)] = n print(len(stack) - 1) main() 수열에 가장 ..

article thumbnail
[BOJ 1300 / 파이썬]K번째 수
알고리즘/BOJ 2021. 8. 31. 19:35

0. 문제 링크 https://www.acmicpc.net/problem/1300 1. 문제 2. 사용 알고리즘 이분탐색 3. 해결 방법 처음 이 문제를 해결하려 할 때 1부터 K번째 수까지 세는 것은 100% 시간 초과가 날 것이다. 왜냐하면 K의 값이 10^9까지 올라 갈 수 있기 때문이다. 그러므로 처음에는 i, j 번째의 숫자의 특성이 있나 파악했다. 3 * 3 배열 ( N = 3 ) 일 때 다음과 같은 특성을 알 수 있었다. 1 2 3 2 4 6 3 6 9 1의 배수 2의 배수 3의 배수 조금 더 세밀하게 이야기 하면 특정 숫자의 이하의 숫자 배열은 다음과 같다. N = 7의 예시를 들어보겠다. 18 숫자보다 작거나 같은 숫자는 다음과 같다. 배열이 크다면 파랑색 부분(8)도 포함되겠지만 배열 ..

article thumbnail
[BOJ 1654 / 파이썬] 랜선 자르기
알고리즘/BOJ 2021. 8. 28. 20:40

0. 문제 링크 https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net 1. 문제 2. 해결 알고리즘 이분 탐색 3. 이 문제의 특징 이 문제의 핵심은 최대 길이의 랜선으로 뽑는 것이다. 예를 들어서 603m의 랜선을 3개로 자른다고 했을 때 200m도 3개, 201m도 3개이다. 여기서 문제는 201m 200m 자른 결과 값이 똑같이 3개인데 어떻게 구분하냐는 것이다. 답은 right 값에 있다. right 로 설정된 값..