일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 감소하는 수
- 9095번
- 19238번
- 키패드 누르기
- 1789번
- 2020 카카오 인턴십
- 12869번
- 거울 설치
- 수식 최대화
- 15686번
- 경주로 건설
- SW ExpertAcademy
- HTML 기초
- SW Expert Academy
- 17144번
- 보석 쇼핑
- 파이썬
- 백준 알고리즘
- 1038번
- 16234번
- python
- 어른 상어
- 14499번
- 12865번
- QueryDSL 기초
- 프로그래머스
- 스타트 택시
- 미세먼지 안녕!
- 빛의 경로 사이클
- 베스트엘범
- Today
- Total
목록파이썬 (29)
보물창고 블로그
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/9EptI/btrtak31lQo/rXGip4HR0SUkhCrhFmAMJK/img.png)
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr 경우의 수 문제입니다. 각 부위별로 개수를 구해서 (개수+1)값을 전부 곱한뒤 1을 빼면 답입니다. 1을 빼는 이유는 옷을 하나도 걸치지 않을 경우를 빼야하기 때문입니다. 소스코드는 아래와 같습니다. def solution(clothes): if len(clothes) == 0: return 0 from collections import defaultdict part = defaultdict(int) for c in clothes: part[c[1]] += 1 answer = 1 for p in part: answer *= part[p..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Eg7sx/btrs7AUit54/I7n0vkixK1LOBqJly0Ikq1/img.png)
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 이 문제는 정렬(sort)을 해야 효율적으로 풀 수 있습니다. 처음에는 시간 초과 때문에 통과를 못하였습니다. O(N^2)으로 풀어서 통과를 하지 못하였습니다. 하지만 sort를 통해 O(N)으로 풀 수 있었습니다. 문자열 순서로 오름차순으로 정렬을 한 뒤에 자신과 자신의 바로 다음 전화번호만을 비교하면 충분합니다. 아래는 소스코드입니다. def..
문제 링크: www.acmicpc.net/problem/1038 1038번: 감소하는 수 음이 아닌 정수 X의 자릿수가 가장 큰 자릿수부터 작은 자릿수까지 감소한다면, 그 수를 감소하는 수라고 한다. 예를 들어, 321과 950은 감소하는 수지만, 322와 958은 아니다. N번째 감소하는 수를 �� www.acmicpc.net 문제는 N번째 감소하는 수를 구하는 것입니다. 처음에 이 문제를 보면 상당히 막막하지만, 천천히 생각해보면 의외로 간단합니다. 저는 1 자릿수부터 10 자릿수까지(9876543210) 천천히 숫자를 만들고 이때마다 count 수를 늘려서 count수가 N과 같아질 때 감소하는 수를 출력하도록 하였습니다. 파이썬으로 해결한 코드는 아래와 같습니다. import sys n = int..
문제 링크: www.acmicpc.net/problem/1789 1789번: 수들의 합 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. www.acmicpc.net 문제는 '서로 다른 N개의 자연수의 합이 S라고 한다. S를 알 때, 자연수 N의 최댓값은 얼마일까?'입니다. 서로 다른 N개의 자연수의 합이 S라고 할 때 N을 최댓값으로 하기 위해서는 1부터 작은 수들을 차례대로 더하여 S보다 커질 때보다 1개 적을 때가 N의 최댓값입니다. 예제를 보면 200이 주어졌을 때, 1부터 20까지 더하면 210이 되고 1부터 19까지 더하면 190이 됩니다. 따라서 1부터 18까지 더하고 200까지 모자란 수를 마지막 수로 정하면 19개가 최대가 됩니다. 그렇다면 N의 최댓값은 어디까..