전체 글(48)
-
[BOJ]17144. 미세먼지 안녕!
문제https://www.acmicpc.net/problem/17144 사용 알고리즘구현, 시뮬레이션 풀이고려사항1. 먼지 확산 - 확산하는 곳이 공기청정기인지, 범위를 넘어가는 곳이 아닌지2. 공기 청정 - 방향전환, 먼지 이동 시 갱신 된 값과 이전 값 구분 후기1. 이 문제에서 어려운 점은 공기 청정 값 갱신이였다.아래 코드는 새로운 배열을 생성한 후 값을 옮기는 방식을 채택했다.하지만 공기 청정하는 라인의 값은 갱신되지만, 그 외의 원래 가지고 있어야하는 값이 0으로 나와 사용할 수 없었다.이러한 방식을 사용하려면 새로운 배열을 0이 아닌 원래 배열에서 deepcopy하여 사용해야 한다.# 잘못된 공기청정 로직def refresh(room): after_room = [[0] * C for _..
2024.08.28 -
[BOJ]9465. 스티커
문제https://www.acmicpc.net/problem/9465 사용 알고리즘DP 풀이고려사항이전 열(다른 행)의 스티커 가중치가 현재 가질 수 있는 스티커 가중치의 최대인지 후기이 문제의 keypoint는 행이 2개로 고정되어 있으며 점수는 음수가 아닌 것이다.점수가 음수가 아닌 이상 이전 2칸 이상을 고려하지 않아도 된다.처음에는 현재 열이 j이면 0 ~ j-2까지의 리스트 전체에서 max값과 이전 열의 다른 행을 비교했다.하지만 이건 불필요한 작업이였고 다른 행의 이전 2개만 비교하면 된다.그 이전은 이후에 가중치가 음수가 아니기 때문에 하나라도 더 선택하는 것이 큰 값이 되기 때문이다. 코드import sysinput = sys.stdin.readlineT = int(input())for t..
2024.08.28 -
[BOJ]2638. 치즈
문제https://www.acmicpc.net/problem/2638 사용 알고리즘BFS 풀이고려사항1. 치즈와 맞닿은 공기가 외부 공기인지2. 외부공기와 2면 이상 닿아있는지 후기1. 이 문제의 keypoint는 초점을 치즈가 아닌 외부공기로 두어야한다는 것이다.처음 치즈에 초점을 두고 푸니 맞닿은 공기가 외부인지 내부인지 확인하는 것이 어려웠다.처음에 행을 기준으로 처음과 마지막 치즈 사이에 있는 공기를 내부라고 체크하려 했으나아래 그림과 같이 에서는 가능하지만 과 같은 상황에서 문제가 발생하였다.2. 또한, bfs 알고리즘을 활용하여 코드를 작성 할 때 visited를 사용하여 이미 온 곳을 관리하는데visited에 방문한 적이 있다고 무조건 가지 않는 것이 아닌 점 역시 고려해야 한다.처음에는 방..
2024.08.27 -
[BOJ]14226 : 이모티콘
문제https://www.acmicpc.net/problem/14226 사용 알고리즘BFS 풀이1. visited 관리- 현재 스티커의 갯수 뿐만 아니라 클립보드에 있는 스티커 수 별로도 시간이 달라지기 때문에 2차원 배열로 관리- 이미 방문한 곳을 계속 방문하지 않기 위해 사용2. bfs- 동일한 가중치를 가지는 그래프에서 최단 경로를 찾는 데 유리- BFS는 보통 모든 경우를 탐색하기 때문에, 경우의 수가 많을 때는 비효율적일 수 있지만, S의 최대값이 1000이므로, BFS로 충분히 해결 가능하다고 판단+ heapq 를 사용한 다익스트라 알고리즘은 가중치가 다른 경로에서 최단 경로를 찾을 때 사용+ 이 문제에서 각 연산은 동일한 비용(1초)을 가지므로, 다익스트라보다 BFS가 더 간단하고 효율적이라..
2024.08.26 -
[디자인 패턴] 디자인패턴
소프트웨어 개발에서 자주 발생하는 문제를 해결하기 위해 검증된 해결책을 제공하는 재사용 가능한 설계 방법특정 문제를 해결하기 위한 방법을 체계적으로 정리한 것으로, 개발 과정에서 일관성과 효율성을 높여줌디자인 패턴의 장점 - 재사용성, 가독성, 유지보수성, 확장성, 안정성과 신뢰성디자인 패턴은 크게 생성 패턴, 구조 패턴, 행위 패턴으로 분류1. 생성 패턴 (Creational Patterns)생성 패턴은 객체 생성 과정에서 유연성과 재사용성을 높이기 위해 사용 싱글톤 패턴 (Singleton Pattern):특정 클래스의 인스턴스가 하나만 생성되고, 전역적으로 그 인스턴스를 접근할 수 있도록 함예를 들어, 데이터베이스 연결 객체가 하나만 존재해야 할 때 사용 팩토리 메소드 패턴 (Factory Meth..
2024.06.10 -
[프로그래밍 패러다임] 프로그래밍 패러다임
프로그래밍 패러다임프로그래머가 문제를 해결하고 소프트웨어를 작성하는 데 사용하는 기본적인 접근 방식각 패러다임은 특정 문제 해결 방식과 소프트웨어 설계 원칙을 강조하며, 여러 종류의 패러다임 존재 즉, 특정 관점과 접근 방식에 따른 개발자의 코딩 방식 프로그래밍 패러다임 종류 및 동향프로그래밍 패러다임 종류프로그래밍 패러다임은 크게 '명령형 프로그래밍(Imperative Programming)'과 선언형 프로그래밍(Declarative programming)으로 분류 명령형 프로그래밍(Imperative Programming)- 어떤 일을 '어떻게(HOW) 수행할 것인지'에 대해 관점을 둔 프로그래밍 수행 기법 명령형 프로그래밍 종류- 절차형 프로그래밍(PP, Procedure Programming) ..
2024.05.28