본문 바로가기

👨‍💻📱✍️🎢314

BOJ 14226 - 이모티콘 문제 백준 온라인 저지 - 14226번 풀이 과정 수행할 수 있는 연산의 종류가 3가지 일 때, 이모티콘 1개에서 N 개로 만들기 위한 최소 연산의 횟수를 구하는 문제입니다. 현재 상태를 나타내는 변수는 화면에 존재하는 이모티콘의 수 와 클립보드에 있는 이모티콘의 수 이므로 이 두 변수를 상태공산의 매개변수로 정합니다. 주의할 점은 클립보드에 저장된 이모티콘을 화면에 붙여넣기 한다고 클립보드에서 삭제되지는 않는다는 것입니다. 코드 from collections import deque S = int(input()) def bfs(): q = deque() visit = [[0] * (2 * S + 1) for _ in range(2 * S + 1)] q.append([1, 0, 0]) visit[1][0].. 2021. 3. 8.
BOJ 2529 - 부등호 문제 백준 온라인 저지 - 2529번 풀이 과정 부등호 조건을 만족하는 최소 및 최대 수열을 찾는 문제입니다. 백트래킹 을 활용해서 조건을 만족하는 모든 수열을 생성한 다음 최대 및 최소 값을 비교해서 답을 구하면 됩니다. 코드 import sys K = int(input()) signs = list(sys.stdin.readline().split()) min_value = &#39;9999999999&#39; max_value = &#39;0&#39; def compare(pick): global min_value, max_value num = &#39;&#39;.join(map(str, pick)) min_value = min_value if int(min_value) < int(num) else n.. 2021. 3. 8.
BOJ 1802 - 종이 접기 문제 백준 온라인 저지 - 1802번 풀이 과정 규칙에 따라 종이를 접었다가 폈을 때 목표로 하는 상태가 될 수 있는지 판단하는 문제입니다. 종이 접기에 의해 생기는 꺾임 방향에는 규칙이 존재합니다. 우선 중심을 기준으로 반으로 접기 때문에 중심 위치의 꺾임 위치는 중요하지 않습니다. 다만 접히는 중심을 기준으로 좌, 우가 서로 대칭을 이루어야 합니다. 따라서 분할 정복 을 통해 대칭성을 판단해서 답을 구해주면 됩니다. 코드 import sys def check(paper, mid): for i in range(mid): if paper[i] == paper[mid * 2 - i]: return False return True def check_opposite(paper): if len(paper) ==.. 2021. 3. 8.
BOJ 17829 - 222-풀링 문제 백준 온라인 저지 - 17829번 풀이 과정 딥러닝에서 사용되는 풀링 연산을 구현하는 문제입니다. 문제에서 제시한 것과 같이 각 단계에서 길이가 반씩 줄어들도록 연산을 구현하면 됩니다. 코드 import sys import math N = int(input()) matrix = [list(map(int, sys.stdin.readline().split())) for _ in range(N)] def pooling(matrix): l = len(matrix) k = l // 2 ret = [[0] * k for _ in range(k)] nx = 0 for x in range(0, l, 2): ny = 0 for y in range(0, l, 2): window = [matrix[x][y], matr.. 2021. 3. 8.
BOJ 13905 - 세부 문제 백준 온라인 저지 - 13905번 풀이 과정 시작 지점에서 목표 지점까지 이동할 때 필요한 간선의 최소 무게를 구하는 문제입니다. 중량제한 문제와 같은 유형이며 BFS + 이분 탐색 으로 해결할 수 있습니다. 이분 탐색 을 이용해 제한 무게를 정하고 해당 무게로 목표 지점에 도달할 수 있는지 BFS 로 판단하면 됩니다. 코드 import sys from collections import deque N, M = list(map(int, sys.stdin.readline().split())) S, E = list(map(int, sys.stdin.readline().split())) bridges = [list(map(int, sys.stdin.readline().split())) for _ in ra.. 2021. 3. 8.
BOJ 2458 - 키 순서 문제 백준 온라인 저지 - 2458번 풀이 과정 학생들의 키 차이 관계가 주어질 때 자신의 키 순서를 파악할 수 있는 학생의 수를 찾는 문제입니다. 키 순서를 파악하기 위해서는 자신을 제외한 모든 학생들과의 대소 관계를 파악할 수 있어야 합니다. 때문에 N 명의 학생들을 그래프의 정점, 학생들 사이의 키 정보를 간선이라고 하면 한 학생이 다른 모든 학생에 도달 가능하거나 다른 학생으로부터 해당 학생으로 도달 가능한 총 인원이 N - 1 이어야 합니다. 플로이드 와샬 알고리즘을 활용해서 모든 학생들 사이의 도달 가능성을 파악하면 문제를 해결할 수 있습니다. 코드 import sys N, M = list(map(int, sys.stdin.readline().split())) edges = [list(map(.. 2021. 3. 8.