본문 바로가기

분류 전체보기154

[Python] 백준 3687번: 박스 채우기 https://www.acmicpc.net/problem/3687 3687번: 성냥개비 각 테스트 케이스에 대해서 입력으로 주어진 성냥개비를 모두 사용해서 만들 수 있는 가장 작은 수와 가장 큰 수를 출력한다. 두 숫자는 모두 양수이어야 하고, 숫자는 0으로 시작할 수 없다. www.acmicpc.net 1. 각 숫자마다 성냥의 갯수를 세서 배열에 넣어준다 2. 최댓값은 성냥이 적게들수록 자릿수가 높아지기 때문에 1과 7로만 이루어져있다. 3. 최솟값은 dp로 제일 최솟값을 구한다. INF = 999999999999999999999999999999999999999999999999999 dy = [INF for _ in range(101)] dy[2] = 1, dy[3] = 7, dy[4] = 4, dy[.. 2021. 9. 14.
[Python] 백준 1493번: 박스 채우기 https://www.acmicpc.net/problem/1493 1493번: 박스 채우기 세준이는 length × width × height 크기의 박스를 가지고 있다. 그리고 세준이는 이 박스를 큐브를 이용해서 채우려고 한다. 큐브는 정육면체 모양이며, 한 변의 길이는 2의 제곱꼴이다. (1×1×1, 2×2×2, www.acmicpc.net 1. 제일 큰 큐브부터 현재 박스에 몇개까지 들어갈수 있는지 확인한다. 2. 현재 큐브의 갯수와 들어갈수있는 박스의 갯수중 작은값을 박스에 대입한다. 3. 지금까지 들어간 박스의 면적을 센다. 4. 다음연산시 지금까지의 박스의 넓이(before)는 8배가 된다. => 1*1*1, 2*2*2, 3*3*3, ... length, width, height = map(i.. 2021. 9. 14.
[Python] 백준 2262번: 토너먼트 만들기 요약 어차피 마지막으로 남게되는 숫자는 1이기 때문에 제일 큰수부터 1이남을때까지 양쪽차중에 적은수를 더해주면 된다. INF = 2147000000 n = int(input()) toner = [INF] + list(map(int, input().split())) + [INF] ans = 0 while n >= 2: idx = toner.index(n) ans += min(abs(toner[idx] - toner[idx-1]), abs(toner[idx] - toner[idx+1])) del toner[idx] n -= 1 print(ans) 2021. 9. 14.
[Python] 백준 2879번: 코딩은 예쁘게 https://www.acmicpc.net/problem/2879 2879번: 코딩은 예쁘게 첫째 줄에 줄의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 현재 줄에 있는 탭의 개수가 주어지며, 1번째 줄부터 순서대로 주어진다. 탭의 개수는 0보다 크거나 같고, 80보다 작거나 같은 정수 www.acmicpc.net 1. 출발탭과 목표탭의 차를 구하고 양수와 음수의 그룹을 분리해준다. (양수와 음수의 분리를 위해, 양수와 음수를 같이연산하면 반대연산은 자꾸 늘어나기때문 ex) 1 -1 에 + 1 을하면 2 0 즉 음수는 사라졌지만 양수의 연산은 하나 더 늘었다) 2. 제일 작은수를 기준으로 분할해서 재귀를 돌려준다. ex) 3 2 1 2 3 (-1) > 2 1 0 1 2 0을 기준으로 분리.. 2021. 9. 14.