본문 바로가기

Python262

[프로그래머스] 최솟값 만들기 import heapq def solution(A,B): result = 0 count = len(A) # A에 대한 최소 힙 / 최대 힙, B에 대한 최소 힙 / 최대 힙 min_heap_a, max_heap_a, min_heap_b, max_heap_b = [], [], [], [] for a in A: heapq.heappush(min_heap_a,a) heapq.heappush(max_heap_a,-a) for b in B: heapq.heappush(min_heap_b,b) heapq.heappush(max_heap_b,-b) while count > 0: # 원소의 개수만큼 반복 min_A, max_A, min_B, max_B = min_heap_a[0], -max_heap_a[0], min_.. 2024. 1. 5.
[백준 18808번] 스티커 붙이기 18808번: 스티커 붙이기 혜윤이는 최근에 다양한 대회를 참여하면서 노트북에 붙일 수 있는 스티커들을 많이 받았다. 스티커는 아래와 같이 사각 모눈종이 위에 인쇄되어 있으며, 스티커의 각 칸은 상하좌우로 모두 연 www.acmicpc.net n, m, k = map(int,input().split()) paper = [[0]*m for _ in range(n)] count = 0 for _ in range(k): r,c = map(int,input().split()) sticker = [list(map(int,input().split())) for _ in range(r)] def check_available(paper,x,y,sticker,sticker_row_len,sticker_col_len): .. 2024. 1. 4.
[백준 16918번] 봄버맨 16918번: 봄버맨 첫째 줄에 R, C, N (1 ≤ R, C, N ≤ 200)이 주어진다. 둘째 줄부터 R개의 줄에 격자판의 초기 상태가 주어진다. 빈 칸은 '.'로, 폭탄은 'O'로 주어진다. www.acmicpc.net r,c,n = map(int,input().split()) area = [list(input()) for _ in range(r)] flag = False dx = [-1,1,0,0] dy = [0,0,-1,1] for i in range(r): # 초기 상태에서 1초 지난 상태로 초기화 for j in range(c): if area[i][j] == "O": area[i][j] = 2 for _ in range(n-1): # n-1초 간 3 ~ 4과정 반복 for i in ran.. 2024. 1. 4.
[백준 9079번] 동전 게임 9079번: 동전 게임 입력의 첫 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 세 줄로 이루어지며, 한 줄에 세 개의 동전모양이 주어지는데, 각각의 동전 표시 사이에는 하나의 공백이 www.acmicpc.net from collections import deque t = int(input()) def reverse_row(area, index): # 행 단위로 동전을 뒤집는 함수 temp = [item[:] for item in area] for i in range(3): if area[index][i] == "H": temp[index][i] = "T" elif area[index][i] == "T": temp[index][i] = "H" return temp .. 2024. 1. 4.
[백준 5427번] 불 5427번: 불 상근이는 빈 공간과 벽으로 이루어진 건물에 갇혀있다. 건물의 일부에는 불이 났고, 상근이는 출구를 향해 뛰고 있다. 매 초마다, 불은 동서남북 방향으로 인접한 빈 공간으로 퍼져나간다. 벽에 www.acmicpc.net # 상근이는 불이 옮겨진 칸과 불이 붙으려는 칸으로 이동 X # 상근이가 있는 칸에 불이 옮겨옴과 동시에 다른 칸으로 이동할 수 있다. # 빌딩의 지도가 주어졌을때, 얼마나 빨리 빌딩을 탈출할 수 있는가(최단 시간) # 빌딩을 탈출하는 최단 시간, 불가능하다면 IMPOSSIBLE 출력 from collections import deque t = int(input()) dx = [-1,1,0,0] dy = [0,0,-1,1] for _ in range(t): w, h = ma.. 2023. 12. 29.
[코딩테스트 문제 풀이 전략] 시간 복잡도 / 시간 복잡도 줄이는 Tip 1. 시간 복잡도란 ? 코드를 실행하면 원하는 기능을 수행하고 종료되기까지 시간이 소요되는데, 이를 더 효율적이고 빠르게 작동시키고 싶다면 어느 알고리즘이 더 효율적인지 비교할 수 있는 '기준'이 필요하다. 문제 해결에 필요한 입력 값과 문제를 해결하는 프로그램이 주어졌을 때, 프로그램이 입력값을 받아 동작하고 결과를 만들어내는데 걸리는 정도를 복잡도라고 한다. 그 중에서 얼마나 시간이 걸리는지는 시간 복잡도로 평가하고, 얼마나 많은 메모리를 사용하는지는 공간 복잡도로 평가한다. 코딩테스트에서는 가장 먼저 제시된 '제한 시간'과 '메모리 사용량'을 확인한 후, 조건에 맞게 실행되도록 자료구조와 알고리즘을 선택하고 문제를 풀어야 한다 ⭐️⭐️⭐️⭐️ 🚨 프로그래머스에서는 특별한 언급이 없다면 제한 시간이 .. 2023. 12. 28.