본문 바로가기

CS/알고리즘 & 문제풀이53

[Python] 백준 5557 1학년 문제 링크 : https://github.com/mintropy/baekjoon_py/blob/master/5000/5557.py GitHub - mintropy/baekjoon_py Contribute to mintropy/baekjoon_py development by creating an account on GitHub. github.com 1. 접근 방법 처음에 문제를 잘못 읽어 해결법을 잘 접근하진 못했다. 문제를 몇차례 읽고, 잘 이해하고는 생각보다 쉬운 DP로 해결했다. 2. 풀이 코드 🖥python 코드 링크: https://github.com/mintropy/baekjoon_py/blob/master/5000/5557.py GitHub - mintropy/baekjoon_py Contri.. 2021. 12. 13.
[Python] 백준 1092 배 문제 링크 : https://www.acmicpc.net/problem/1092 1092번: 배 첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째 줄에는 박스의 수 M이 주어진다. M은 10,000보 www.acmicpc.net 1. 접근 방법 전형적인 그리디 문제 중 하나라고 생각한다. 해결 방법은 다양하게 고민하기는 했지만, 잘 떠오르지 않아 브루트 포스로 해결했다. 2. 풀이 코드 🖥python 코드 링크: https://github.com/mintropy/baekjoon_py/blob/master/1000/1000/1092.py GitHub - mintropy/baekjoon_py C.. 2021. 12. 13.
[Python] 백준 22965 k개의 부분 배열 문제 링크 : https://www.acmicpc.net/problem/22965 22965번: k개의 부분 배열 4 5 6 / 1 2 3으로 나눈 뒤, 1 2 3 / 4 5 6으로 재배열하면 된다. www.acmicpc.net 1. 접근 방법 간단한 정렬 구조를 묻는 문제라 생각했다. 만약 횟수 제한 또는 한 번에 하려면 몇 조각으로 나누어야 하냐는 문제라면 조금 더 까다로울 수도 있었지만, 제한 없이 반복할 수 있어서 3조각으로 나눌 수 있으면 무조건 가능하다. 3조각으로 나누면 한 개씩 잘라내서 원하는 자리에 넣는 작업만 반복해도 된다. 또한 정렬되어 있으면 1이 되는것은 주어진 예제에서도 알 수 있다. 문제는 언제 2번만 가능한지를 구현하는 것이다. 2. 풀이 코드 🖥python 코드 링크 : h.. 2021. 11. 7.
[Python] 백준 20302 민트초코 문제 링크 : https://www.acmicpc.net/problem/20302 20302번: 민트 초코 상원이가 고른 디저트가 “민트 초코”인 경우 mint chocolate, “치약”인 경우 toothpaste를 출력한다. www.acmicpc.net 1. 접근 방법 간단한 소수 찾기 + 소인수 분해 문제라고 생각했다. 과정에서 많은 시간 초과가 났고, 그 이유를 잘 떠올리지 못했는데, 소수 판정에서 가장 간단할 수 있는 부분에서 많은 실수를 했다. 2. 풀이 코드 🖥python 코드 링크 : https://github.com/mintropy/baekjoon_py/blob/master/20000/20302.py GitHub - mintropy/baekjoon_py Contribute to mintr.. 2021. 11. 6.
[Python] 백준 16884 나이트 게임 문제 링크 : https://www.acmicpc.net/problem/16884 1. 접근 방법 모든 경우의 수를 탐색하기에는 너무 경우의 수가 많았다. 최대 10,000이지만, n일 때 결과가 n + 1일 때 결과 및 과정에 직접적인 인과 과정을 찾을 수 없었기 때문에, DP 식의 풀이 과정은 옳지 않다고 생각했다. 만약 각각 과정을 백트레킹으로 계산할 수도 있지만, 최대 100개의 테스트 케이스가 주어지면 불가능할 것이라 생각했다. 2. 풀이 코드 🖥python 코드 : https://github.com/mintropy/baekjoon_py/blob/master/16000/16884.py GitHub - mintropy/baekjoon_py Contribute to mintropy/baekjoon_.. 2021. 11. 6.
[Python] 백준 20166 문자열 지옥에 빠진 호석 문제 링크 : https://www.acmicpc.net/problem/20166 20166번: 문자열 지옥에 빠진 호석 K개의 줄에 걸쳐서, 신이 좋아하는 문자열을 만들 수 있는 경우의 수를 순서대로 출력한다. www.acmicpc.net 1. 접근 방법 범위가 작고, 전체 탐색이 아니라면 딱히 방법이 없을 것 같아, 브루트 포스로 시행했다. 8방향으로, 양 끝이 연결되어 있어 모듈러 연산으로 이동 위치를 구했고, 각 위치에서 신이 좋아하는 문자열에 있는지 확인하는 작업을 했다. 2. 풀이 코드 🖥python 코드 import sys input = sys.stdin.readline def search(string_now: str, x: int, y: int): global n, m, grid, dx, .. 2021. 11. 1.
[Python] 백준 1186 직사각형 색칠하기 문제 링크 : https://www.acmicpc.net/problem/1186 1186번: 직사각형 색칠하기 2차원 좌표 평면에 변이 축에 평행한 직사각형 N개가 있다. 직사각형은 1부터 N까지 번호가 매겨져 있다. i번 직사각형의 왼쪽 아래 꼭짓점의 좌표는 (xi,1, yi,1)이고, 오른쪽 위 꼭짓점의 좌표는 (xi www.acmicpc.net 1. 접근 방법 어떻게든 그리디 한 방법이나, 스위핑 같은 방법을 고민했는데, 여러 직 사각형이 겹치는 경우의 해결 방법이 떠오르지 않아, 전체 탐색을 고민했다. 최대 50개 직사각형을 탐색해서 50 * 50으로 각 직사각형마다 겹치는지 확인할 수 있고, 각 직사각형이 최대로 많이 탐색해도 50 * 8 정도라 생각하여 최대 1,000,000번의 탐색으로 가능.. 2021. 11. 1.
[Python] 백준 23259 Celebrity 문제 링크 : https://www.acmicpc.net/problem/23259 23259번: Celebrity 첫째 줄에 아름다운 별의 수를 출력한다. www.acmicpc.net 1. 접근 방법 그래프의 동형 확인은 매우 어려운 작업이다. 그나마 그래프의 동형을 판별하는 몇 가지 방법을 기준으로 하나하나 분류하려 시도했는데, 너무 많은 조건을 고려해야 할 것 같아서 그래프의 조건을 기준으로 동형을 판별하는 것은 포기하고, 브루트 포스로 탐색했다. 점이 5개로 고정이므로, 각 간선 번호를 0~9번으로 하여 각 별의 상태를 비트연산으로 계산한 숫자로 처리했다. 2. 풀이 코드 🖥python 코드 from itertools import permutations import sys input = sys.st.. 2021. 10. 31.
[Python] 백준 23257 비트코인은 신이고 나는 무적이다 문제 링크 : https://www.acmicpc.net/problem/23257 23257번: 비트코인은 신이고 나는 무적이다 코인 경력 4년차, 차트에 통달한 찬호는 이전 $N$개의 월봉을 통해 다음 월봉의 절댓값을 예측할 수 있는 아래의 공식을 만들어냈다. (다음 월봉의 절댓값) = 이전 $N$개의 월봉 중 중복을 허용해 www.acmicpc.net 1. 접근 방법 처음에는 XOR 연산에 대해 고민했는데, XOR 연산 처리는 비교적 쉽게 방법을 찾았다. https://stackoverflow.com/questions/52108901/xor-operation-on-three-values XOR operation on three values I have three boolean values. I nee.. 2021. 10. 30.