일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- coding
- counter
- lambda
- import re
- 연습문제
- 완전탐색
- Stack
- time complexity
- lv4
- python
- mysql
- Level2
- Queue
- 데이터분석
- 조합
- join
- 시간복잡도
- 코딩
- 코딩테스트
- CodingTest
- 코테
- 프로그래머스
- level4
- 파이썬
- programmers
- itertools
- sql
- BFS
- collections
- coding test
- Today
- Total
목록python (73)
ror_coding
Counter를 이용하여 경우의 수로 나눈 값들 계산하기. Question 어느 공원 놀이터에는 시소가 하나 설치되어 있습니다. 이 시소는 중심으로부터 2(m), 3(m), 4(m) 거리의 지점에 좌석이 하나씩 있습니다. 이 시소를 두 명이 마주 보고 탄다고 할 때, 시소가 평형인 상태에서 각각에 의해 시소에 걸리는 토크의 크기가 서로 상쇄되어 완전한 균형을 이룰 수 있다면 그 두 사람을 시소 짝꿍이라고 합니다. 즉, 탑승한 사람의 무게와 시소 축과 좌석 간의 거리의 곱이 양쪽 다 같다면 시소 짝꿍이라고 할 수 있습니다. 사람들의 몸무게 목록 weights이 주어질 때, 시소 짝꿍이 몇 쌍 존재하는지 구하여 return 하도록 solution 함수를 완성해주세요. Point 두 값이 같을 때 ) n명이라..
특수한 경우를 인지하고 대처하기 ! Question 마법의 돌을 아끼기 위해 민수는 항상 최소한의 버튼을 눌러서 이동하려고 합니다. 민수가 어떤 층에서 엘리베이터를 타고 0층으로 내려가는데 필요한 마법의 돌의 최소 개수를 알고 싶습니다. 민수와 마법의 엘리베이터가 있는 층을 나타내는 정수 storey 가 주어졌을 때, 0층으로 가기 위해 필요한 마법의 돌의 최소값을 return 하도록 solution 함수를 완성하세요.제한사항1 ≤ storey ≤ 100,000,000 Point r 이 5일 때 10의 자리를 보며 경우의 수를 다시 나눠야 함. Code def solution(storey): cnt = 0 while storey : storey, r = storey//10, sto..
sum(list or queue)를 사용하면 시간복잡도가 높아지기 때문에 total 변수를 사용한다. Question 비내림차순으로 정렬된 수열이 주어질 때, 다음 조건을 만족하는 부분 수열을 찾으려고 합니다. 기존 수열에서 임의의 두 인덱스의 원소와 그 사이의 원소를 모두 포함하는 부분 수열이어야 합니다. 부분 수열의 합은 k입니다. 합이 k인 부분 수열이 여러 개인 경우 길이가 짧은 수열을 찾습니다. 길이가 짧은 수열이 여러 개인 경우 앞쪽(시작 인덱스가 작은)에 나오는 수열을 찾습니다. 수열을 나타내는 정수 배열 sequence와 부분 수열의 합을 나타내는 정수 k가 매개변수로 주어질 때, 위 조건을 만족하는 부분 수열의 시작 인덱스와 마지막 인덱스를 배열에 담아 return 하는 solution ..
greedy algorithm (탐욕법)은 stack을 이용하여 해결하기 ! Question 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다.예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다.문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 solution 함수를 완성하세요. 제한 조건 number는 2자리 이상, 1,000,000자리 이하인 숫자입니다. k는 1 이상 number의 자릿수 미만인 ..
lstrip과 lambda x : x*3 이용하기 ! 제한 사항을 잘 읽고 활용하여 풀자. Question 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. 제한 사항 numbers의 길이는 1 이상 100,000 이하입니다. numbers의 원소는 0 이상 1,000 이하입니다. 정답이 너무 클 수 있으..
shift와 XOR 문제.. 짝수일 때는 binary 값의 맨 우측이 0이라서 +1만 하면 되지만 홀수일 때 여러 bin 값이 바뀌기 때문에 이를 고려해야 한다. Question 정수들이 담긴 배열 numbers가 매개변수로 주어집니다. numbers의 모든 수들에 대하여 각 수의 f 값을 배열에 차례대로 담아 return 하도록 solution 함수를 완성해주세요. Point서로 다른 지점이 2개 이하여야 함.따라서 num ^ (num+1) 해준 값을 right shift 2칸 해줌.(만약 서로 다른 지점이 1개라면 right shift 1칸 해줌) 왜 `num`과 `num + 1`을 비교하는가? `num + 1`은 `num`보다 큰 가장 작은 숫자임. 이를 비교하면, 비트를 최소한으로 변경하면서 크기..
내 첫 DP 문제.. 문제를 읽고 dp 로 풀 수 있다는 패턴을 알아내야 한다!홀/짝일 경우로 나눠서 연산하는 과정으로 풀었는데 테케가 틀리게 된다. 따라서 dp로 풀기. Question 직사각형의 가로의 길이 n이 매개변수로 주어질 때, 이 직사각형을 채우는 방법의 수를 return 하는 solution 함수를 완성해주세요.제한사항가로의 길이 n은 60,000이하의 자연수 입니다.경우의 수가 많아 질 수 있으므로, 경우의 수를 1,000,000,007으로 나눈 나머지를 return해주세요. Point 부분 문제로 나눌 수 있는가 ? 중복 계산이 발생하는가? => 위 두 조건이 True이기 때문에 이 문제는 dp로 해결한다. Code (After) def solution(n): n1, n2 = 0..
첫 Heap 문제 ! 우선순위큐 ! 너무 유용하고 빠르고 편하고 좋다 ^^.. Question Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다. Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 solution 함수를 작성해주세요.모든 음식의 스코빌 지수를 K 이상으로 만들 수 없는 경우에는 -1을 return 합니다. Point heapq를 이용하여 작은 값 두 개 m1, m2 뽑고 가장 작은 m1이 K보다 크다면 return.마지막에 모든 음식이 K 이상인지 확인하고 아니라면 -1 return. Code import heapqd..