본문 바로가기

Algorithm705

[구현/수학] 백준 12813 이진수 연산 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 12813번: 이진수 연산 총 100,000 비트로 이루어진 이진수 A와 B가 주어진다. 이때, A & B, A | B, A ^ B, ~A, ~B를 한 값을 출력하는 프로그램을 작성하시오. www.acmicpc.net 2. 문제 풀이 이진수 A, B를 [and, or, xor, not A, not B] 연산하는 문제입니다. 2022.01.24 - [PL (Programming Language)/Python] - [Python] 파이썬 연산자와 자동 형변환(캐스팅, Casting) [Python] 파이썬 연산자와 자동 형변환(캐스팅, Casting) 2022.01.23 - [PL (Programming Language)/Python] - [Python] 변수.. 2022. 5. 2.
[구현/수학] 백준 8741 이진수 합 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 8741번: 이진수 합 첫째 줄에 이진수로 나타냈을 때, k자리 이하인 모든 자연수의 합을 이진수로 출력한다. www.acmicpc.net 2. 문제 풀이 이진수의 k자리 이하인 모든 자연수의 합을 이진수로 출력하는 문제입니다. 예를 들어, 3자리 이하인 이진수는 001, 010, 011, 100, 101, 110, 111로 모두 7가지입니다. 000은 0으로 자연수가 아니므로 제외됩니다. 이를 경우의 수로 따져보면, 각 자릿수는 0 또는 1이 올 수 있으므로 2^k 이고 0을 제외하면 2^k -1이 됩니다. 등차가 1인 수열의 합: n * (n+1) / 2 1부터 2^k -1까지의 합은 등차수열의 합 공식을 이용하면 쉽게 구할 수 있습니다. 3. 코드 k.. 2022. 5. 1.
[구현/수학] 백준 14656 조교는 새디스트야!! - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 14656번: 조교는 새디스트야!! 첫 번째 줄에 헌우네 반 학생의 수 N이 주어진다. (1 ≤ N ≤ 20,000) 두 번째 줄에 학생들의 번호가 현재 줄을 서있는 순서대로 주어진다. (1 ≤ 번호 ≤ N) 중복되는 번호는 없다. www.acmicpc.net 2. 문제 풀이 순서에 맞지 않은 위치에 서 있는 사람을 골라내는 문제입니다. index: 1 2 3 4 5 num: 3 2 5 4 1 위 경우, 순서에 맞지 않은 사람은 3명입니다. 3. 코드 import sys input = sys.stdin.readline # 입력 n = int(input()) numlist = list(map(int, input().split())) # 순서 안 맞는 사람 골.. 2022. 4. 30.
[구현/수학] 백준 10996 별 찍기 - 21 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 10996번: 별 찍기 - 21 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. www.acmicpc.net 2. 문제 풀이 예제 입출력을 보고 패턴을 파악하는 문제입니다. 먼저 별의 높이부터 살펴봅시다. 맨 처음 n = 1일 때는 별이 1개입니다. 그 이후로 4, 6, 8로 2씩 증가합니다. 또, 홀수층은 공백 없이 시작하고 짝수층은 공백 후에 시작합니다. 별은 n이 1씩 커질 때마다, 홀수층이 먼저 늘어나고 그 뒤에 짝수층이 늘어납니다. 솔직히 예제만 보고 패턴을 파악하긴 어렵습니다. 추가로 5, 6일 때도 살펴보면 패턴이 더 확실하게 보입니다. 3. 코드 n = int(input()) for _ in range(n): print('* '*(n - .. 2022. 4. 29.
[구현/수학] 백준 2163 초콜릿 자르기 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 2163번: 초콜릿 자르기 정화는 N×M 크기의 초콜릿을 하나 가지고 있다. 초콜릿은 금이 가 있는 모양을 하고 있으며, 그 금에 의해 N×M개의 조각으로 나눠질 수 있다. 초콜릿의 크기가 너무 크다고 생각한 그녀는 초콜릿 www.acmicpc.net 2. 문제 풀이 N*M 크기의 초콜릿이 주어질 때, 1*1 크기로 쪼개는 최소 횟수를 구하는 문제입니다. 1) 가로로 먼저 자르고 세로로 자르기: (M-1) + M*(N-1) = N*M - 1 2) 세로로 먼저 자르고 가로로 자르기: (N-1) + N*(M-1) = N*M - 1 초콜릿을 자르는 방법은 위 2가지입니다. 개인적으로 더 짧은 쪽으로 먼저 자르면 횟수가 줄어들 줄 알았는데, 결과는 똑같았습니다. .. 2022. 4. 28.
[구현/수학] 백준 1010 다리 놓기 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net 2. 문제 풀이 다리를 놓을 수 있는 경우의 수를 구하는 문제입니다. 다리를 겹쳐서 놓지는 못하며, 강 서쪽(N)보다 강 동쪽(M)에 다리를 놓을 수 있는 장소가 항상 많습니다. 어렵게 생각하면 끝도 없이 어렵지만, 단순하게 생각하면 쉽습니다. 강 동쪽에서 1, 3, 6, 7번에 다리를 놓는다고 합시다. 그러면 강 서쪽은 어떻게 될까요? 위와 같은 경우, 단 1가지 밖에 없습니다. N개의 다리를 놓아야 하며, 서로.. 2022. 4. 27.
[동적계획법/DP] 백준 1932 정수 삼각형 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 2. 문제 풀이 위와 같은 정수삼각형이 입력으로 주어집니다. 맨 위층부터 아래층까지 수를 합하며, 위와 같이 맞닿은 아랫층 숫자만 더할 수 있습니다. (대각선 왼쪽 혹은 오른쪽에 있는 수) 위 예제에서는 7 + 3 + 8 + 7+ 5 = 30이 가장 큰 수입니다. 2022.02.12 - [Algorithm] - [Algorithm] 메모해두고 불러와서 사용하는 동적 프로그래밍(DP) [Algorithm] 메모해두고 불러와서 사용하는 동적 프로그래밍(DP) [ Contents ] 1. 동.. 2022. 4. 26.
[동적계획법/DP] 백준 1912 연속합 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 2. 문제 풀이 연속된 수들의 합 중 가장 큰 값을 출력하는 문제입니다. 2022.02.12 - [Algorithm] - [Algorithm] 메모해두고 불러와서 사용하는 동적 프로그래밍(DP) [Algorithm] 메모해두고 불러와서 사용하는 동적 프로그래밍(DP) [ Contents ] 1. 동적 프로그래밍(Dynamic Programming, 동적계획법) 동적계획법(Dynamic programming, DP): 작은 문.. 2022. 4. 25.
[동적계획법/DP] 백준 1149 RGB거리 - 파이썬(Python) [ Contents ] 1. 문제 (링크 참조) 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 2. 문제 풀이 옆집과 색이 같지 않도록 최소의 비용으로 색을 칠하는 문제입니다. 2022.02.12 - [Algorithm] - [Algorithm] 메모해두고 불러와서 사용하는 동적 프로그래밍(DP) [Algorithm] 메모해두고 불러와서 사용하는 동적 프로그래밍(DP) [ Contents ] 1. 동적 프로그래밍(Dynamic Programming, 동적계획법) 동적계획법(Dynamic.. 2022. 4. 24.