본문 바로가기

Algorithm 💡272

[백준 11123번] 양 한마리... 양 두마리... 11123번: 양 한마리... 양 두마리... 얼마전에 나는 불면증에 시달렸지... 천장이 뚫어져라 뜬 눈으로 밤을 지새우곤 했었지. 그러던 어느 날 내 친구 광민이에게 나의 불면증에 대해 말했더니 이렇게 말하더군. "양이라도 세봐!" www.acmicpc.net import sys from collections import deque input = sys.stdin.readline t = int(input().rstrip()) dx = [-1,1,0,0] dy = [0,0,-1,1] for _ in range(t): h,w = map(int,input().split()) answer = 0 area = [list(input().rstrip()) for _ in range(h)] visited = [[F.. 2024. 1. 6.
[백준 20291번] 파일 정리 20291번: 파일 정리 친구로부터 노트북을 중고로 산 스브러스는 노트북을 켜자마자 경악할 수밖에 없었다. 바탕화면에 온갖 파일들이 정리도 안 된 채 가득했기 때문이다. 그리고 화면의 구석에서 친구의 메시지를 www.acmicpc.net import sys from collections import Counter input = sys.stdin.readline n = int(input().rstrip()) texts = [input().rstrip().split(".")[1] for _ in range(n)] for name, count in sorted(list(dict(Counter(texts)).items()),key=lambda x: x[0]): print(f"{name} {count}") 이번 .. 2024. 1. 6.
[프로그래머스] 숫자의 표현 def solution(n): answer = 0 for i in range(1,n+1): sum_value = 0 for j in range(i,n+1): sum_value += j if sum_value == n: answer += 1 elif sum_value > n: break return answer 이번 문제는 연속된 자연수로 n을 만들 수 있는 모든 경우의 수를 구하는 브루트포스 (brute force, 완전 탐색) 문제이다. 처음에는 dp 문제인 줄 알고 패턴과 점화식을 찾으려고 노력했으나, 도무지 규칙을 생각해봐도 나오지 않아 다른 사람의 풀이를 참고해본 결과 완전 탐색으로 풀이해야 한다는 것을 알게 되었다.(n 2024. 1. 5.
[프로그래머스] 최솟값 만들기 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.
[프로그래머스] JadenCase 문자열 만들기 def solution(s): words = s.split() blanks = [] for i,value in enumerate(s): if value == ' ': # 공백문자인 경우 if i == 0: # 첫번째 문자인 경우(index error 방지) blanks.append(' ') else: if s[i-1] == ' ': # 연속된 공백문자일 경우 blanks[-1] += ' ' else: blanks.append(' ') def convertWord(string): # JadenCase로 문자열 변환해주는 함수 result = '' for i,value in enumerate(string): if i == 0: if ord('a') 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.