본문 바로가기
728x90

알고리즘/[python] 백준 BOJ328

[python] 백준 14391 종이 조각 https://www.acmicpc.net/problem/14391 14391번: 종이 조각 영선이는 숫자가 쓰여 있는 직사각형 종이를 가지고 있다. 종이는 1×1 크기의 정사각형 칸으로 나누어져 있고, 숫자는 각 칸에 하나씩 쓰여 있다. 행은 위에서부터 아래까지 번호가 매겨져 있고, www.acmicpc.net 문제 해결 우선 비트마스크에 대해서 알아야 한다. 비트마스크는 숫자를 이진수로 배열함으로써 계산을 더 빠르게 할 수 있고 bool 연산도 빠르게 할 수 있다. (1은 True, 0은 False를 나타낸다.) 비트마스크의 연산은 크게 5가지가 있다. AND 연산 (&) (예시 : 11011 & 10001 = 10001) OR 연산(|) (예시 : 11001 & 10011 = 11011) XOR 연.. 2023. 1. 21.
[python] 백준 1182 부분수열의 합 https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 문제 해결 ●리스트 안의 숫자가 매우 다양하고 주어지는 수열이 특징은 알 수 없으므로 모든 경우의 수를 다 계산해 봐야 할 것이다. ●부분수열의 합을 알아야 하기 때문에 부분수열의 순서는 상관이 없다. 따라서 i개(i>0)를 순서없이 뽑았을 때 합이 s가 되면 답을 +1을 해주면 된다. CODE import sys input = sys.stdin.readline.. 2023. 1. 19.
[python] 백준 11723 집합 https://www.acmicpc.net/problem/11723 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 문제 해결 집합의 연산에 대해서 확인 할 수 있는 기본적 문제라 생략. CODE import sys input = sys.stdin.readline M = int(input()) S = set() for _ in range(M): command = input().split() if command[0] == 'add': S.add(int(command[1])) elif command[0] == 'remove': try: S.remov.. 2023. 1. 18.
[python] 백준 2529 부등호 https://www.acmicpc.net/problem/2529 2529번: 부등호 두 종류의 부등호 기호 ‘’가 k개 나열된 순서열 A가 있다. 우리는 이 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자를 넣어서 모든 부등호 관계를 만족시키려고 한다. 예를 들어, 제시 www.acmicpc.net 문제 해결 부등호를 k개 뽑기 때문에 숫자는 서로 다른 k+1개의 숫자를 뽑게 된다. (0~9) 따라서 [0,1,2,3,4,5,6,7,8,9] 에서 k+1개를 뽑는 순열을 쓴 다음 주어진 식을 만족하면 정답 리스트에 추가하는 식으로 문제를 해결했다. 마지막에 max, min 두번 찾는 것보다 sort()한번 한 다음 최댓값은 맨 뒤 원소를 꺼내고, 최솟값은 맨 앞 원소를 꺼내는 식으로 문제를 해결하였다. CO.. 2023. 1. 17.
728x90