본문 바로가기

Algorithm/Greedy27

[파이썬] 프로그래머스 : 마법의 엘리베이터 (레벨2) [파이썬] 프로그래머스 : 마법의 엘리베이터 (레벨2)https://https://school.programmers.co.kr/learn/courses/30/lessons/148653BFS/다익 -> 범위 넓어서 시간 초과.간선도 노드마다 20개 가량된다.테케 2번처럼 그리디하게 접근.1의 자리부터 접근해서 숫자를 그리디하게 처리한다.숫자가 4이하이면 빼주고 6이상이면 .5의 경우에는 다음 자리수도 봐야한다.재귀를 사용해서 다음 자리를 계속해서 탐색한다.def solution(x): answer = 0 def dfs(n): nonlocal answer if not n: return p,q = divmod(n,10) if 0=.. 2025. 3. 17.
[자바] SWEA 1868 : 파핑파핑 지뢰찾기 (D4) [자바] SWEA 1868 : 파핑파핑 지뢰찾기 (D4)SWEA 1868 : 파핑파핑 지뢰찾기풀이방향성 생각약간 그리디하게 접근해야한다.0을 누르면 주변에 있는 1 이상의 숫자에 대해서도 탐지를 해주니, 0에서 먼저 BFS를 돌리고 이후에 1 이상 숫자들을 처리하기. 전체코드import java.io.*;import java.util.*;class Solution { static int N; static int[][] arr; static boolean[][] V; static int[][] dires = {{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}}; static Map cvt = new HashMap() {{ .. 2025. 3. 9.
[파이썬] 백준 12904 : A와 B (골드5) [파이썬] 백준 12904 : A와 B (골드5)https://www.acmicpc.net/problem/12904풀이방향성 생각start to end로 BFS처럼 진행하면 $2^1000$이라서 메모리 초과.반대로 end to start로 진행하면, 선택지는 하나밖에 없음.마지막이 A이면 A 제거.마지막이 B이면 B 제거하고 뒤집기.계속 문자열을 제거하면서 start 문자가 나오면 가능, 아니면 불가능. 전체코드start = input()end = input()answer = 0while True: # 문자열 둘이 같아졌으면 탈출 if start == end: answer = 1 break # end를 계속 제거했음에도 불구하고, start를 못찾은 경우 탈출 .. 2024. 12. 24.
[파이썬] 백준 1083 : 소트 (골드4) [파이썬] 백준 1083 : 소트 (골드4)https://www.acmicpc.net/problem/1083풀이방향성 생각각 자리수 마다 남은 횟수 S에 대해서 Swap 가능한 범위가 주어진다.Swap 범위 내에서 해당 자리보다 큰 값이 주어지면 Swap을 반복한다.$N=50$이라 swap만 제대로 구현하면 시간적으로 문제될 일은 없다.전체코드N = int(input())arr = list(map(int,input().split()))T = int(input())goal = sorted(arr,reverse=True)# 해당 인덱스 a에서 앞으로 한칸 swapdef swap(array: list, a: int)->list: array[a],array[a-1] = array[a-1],array[a] .. 2024. 11. 14.