전체 글(76)
-
[백준/Python] 2529_부등호
문제 https://www.acmicpc.net/problem/2529 2529번: 부등호 두 종류의 부등호 기호 ‘’가 k개 나열된 순서열 A가 있다. 우리는 이 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자를 넣어서 모든 부등호 관계를 만족시키려고 한다. 예를 들어, 제 www.acmicpc.net 풀이 처음에는 itertools.permutations로 풀려고 했으나 한번에 모든 경우의 수를 배열에 담기 때문에 메모리 초과가 났습니다. 따라서 재귀를 이용해서 완전 탐색하여 풀었습니다. 매자릿수 마다 0 ~ 9까지 숫자를 순회하여 한 숫자씩 string 타입으로 붙여나갔기 때문에, 맨 처음 나온 수가 최소값이 되고 맨 마지막에 나온 수가 최대값이 됩니다. check 배열로 숫자의 중복을 막았습니다. ..
2021.06.22 -
[백준/Python] 1735_분수 합
문제 https://www.acmicpc.net/problem/1735 1735번: 분수 합 첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다. www.acmicpc.net 풀이 두 분수의 합을 기약 분수로 나타낸 식은 다음과 같습니다. $$ {a \over b} \times {c \over d} = {(a \times d + c \times b) \div GCD \over (b \times d) \div GCD} $$ $$ GCD = (a \times d + c \times b)와 (b \times d)의 최대공약수$$ 코드 import sys def get_GCD(a, b): if b == 0: return a..
2021.06.22 -
[백준/Python]14503_로봇 청소기
문제 https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 풀이 로봇청소기가 0으로 연결된 영역을 전부 청소할 것이라고 생각해서 BFS로 풀려고 했지만, 2-c와 2-d 조건에 의해 0으로 연결된 영역이라고 하더라도 로봇 청소기가 청소하지 않은 영역이 생기게 되어 결국 구현 문제라는 것을 깨달았습니다. 문제에서 주어진 2번 예제에서 로봇청소기가 청소하고 나면 matrix[4][8]과 matrix[6][6] 두 영역이 청소를 안하고 남게 됩니다. c..
2021.06.18 -
[백준/Python]1965_상자넣기
문제 https://www.acmicpc.net/problem/1965 1965번: 상자넣기 정육면체 모양의 상자가 일렬로 늘어서 있다. 상자마다 크기가 주어져 있는데, 앞에 있는 상자의 크기가 뒤에 있는 상자의 크기보다 작으면, 앞에 있는 상자를 뒤에 있는 상자 안에 넣을 수가 www.acmicpc.net 풀이 DP를 이용하여 풉니다. 최장 증가 부분 수열(LIS, Longest Increasing Subsequence)를 찾는 문제입니다. DP 테이블의 값은 각 열의 숫자를 포함하는 LIS의 길이를 의미합니다. 아래 표는 문제에서 주어진 예제의 DP 테이블입니다. numbers 1 6 2 5 7 3 5 6 dp 1 2 2 3 4 4 4 5 n의 길이를 갖는 DP 테이블을 선언하고 dp[0] = 1로 ..
2021.06.18 -
[백준/Python]1759_암호 만들기
문제 https://www.acmicpc.net/problem/1759 1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 풀이 \( _{C}\mathrm{C}_{L} \) 의 모든 조합을 오름차순으로 정렬하여 출력합니다. 단, 아래의 조건을 만족해야 합니다. 최소 한 개의 모음을 포함해야 합니다. 최소 두 개의 자음을 포함해야 합니다. 코드 import sys from itertools import combinations l, c = map(int, sys.stdin.readline().rstrip().split()..
2021.06.17 -
[백준/Python]10972_다음 순열
문제 https://www.acmicpc.net/problem/10972 10972번: 다음 순열 첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다. www.acmicpc.net 풀이 next_permutation 알고리즘을 사용합니다. 아래 페이지를 참고하세요. https://steadycode.tistory.com/27 [알고리즘]Next Permutation 알고리즘 Next Permutation Algorithm은 순열 알고리즘 중에 하나로 무작위 순열의 다음 순열을 구하는 알고리즘입니다. 시간 복잡도는 O(N)이고 Greedy 알고리즘을 기반으로 합니다. 아래의 수열을 예로 다음에 올 steadycode.tistory..
2021.06.17