[Algorithm](43)
-
[BOJ_Python] 16724. 피리 부는 사나이
문제https://www.acmicpc.net/problem/16724 사용 알고리즘DFS 풀이고려사항1. 현재 지나고 있는 경로의 상태- 아직 방문한 적이 없는 곳인지- 지금 현재 만들고 있는 경로에 있는지- 이전에 safe zone으로 갈 수 있는 곳으로 판명한 곳인지 후기1. 이 문제의 keypoint는 사이클을 추적하는 것이다.갈 수 있는 방향이 한 개로 한정되어 있으며, 지도 밖으로 나가는 방향의 입력은 주어지지 않는다.이러한 조건들로 인해 풀이가 간단해졌다. 2. 방문하지 않은 곳만 DFS를 시작하였다.2-1) visited[ci][cj] == 0 인 경우방문하지 않은 곳이기 때문에 진행 중인 경로로 1로 설정하고 스택에 넣어준다.이후 방향에 따라 이동을 진행한다.2-2) visited[ci]..
2024.11.11 -
[BOJ_Python] 20057. 마법사 상어와 토네이도
문제https://www.acmicpc.net/problem/20057 사용 알고리즘구현, 시뮬레이션 풀이고려사항1. 반시계 방향으로 이동2.방향전환 시 날라가는 모래 percentage 변화3. 다른 칸으로 이동한 모래양, 밖으로 버려지는 모래양, 알파 값으로 이동할 모래 양 후기1. 토네이도 방향전환은 기준(N // 2, N // 2)부터 시작한다.방향을 제공하며 step을 확인하며 방향 변화 여부를 확인하고, flag를 확인하며 step의 수를 늘린다.우선 가야하는 step은 방향전환 2번마다 1씩 증가한다.때문에 Flag를 두어 방향 전환 시마다 토글 형식으로 변경하고 확인하였다.이전에 달팽이 문제를 풀어보아 동일한 방식으로 접근하였다.하지만 달팽이에 더 좋은 풀이가 있었는데 그 방식은 사용하지 ..
2024.11.10 -
[BOJ_Python] 24444. 알고리즘 수업 - 너비 우선 탐색 1
문제https://www.acmicpc.net/problem/24444 사용 알고리즘BFS 풀이고려사항1. 양방향 그래프2. 각 노드에서 다음 갈 수 있는 노드 오름차순으로 방문 후기1. 가장 기본적인 BFS 알고리즘에 정렬만 들어간 문제이다.2. 그래프를 만들때 인덱스가 헷갈리지 않게 V+1으로 초기 세팅하여 각 수와 인덱스 번호를 맞췄다.3. deque와 visited를 활용하여 기본 BFS를 진행하였다. 코드import sysfrom collections import dequeinput = sys.stdin.readlineV, E, S = map(int, input().split())gp = [[] for _ in range(V + 1)]# 그래프 초기 세팅for _ in range(E): s..
2024.11.09 -
[Programmers_Python] 징검다리 건너기
문제https://school.programmers.co.kr/learn/courses/30/lessons/64062 사용 알고리즘이분탐색 풀이고려사항1. 기준이 되는 수보다 같거나 작은 수의 연속 갯수2. 기준을 이진탐색으로 탐색 후기1. 이 문제의 keypoint는 시간관리이다. 2. 처음 슬라이싱을 활용하여 for문으로 문제를 접근하였다.엄청 단순하고 빨리 풀었지만, 효율성 테스트에서 모두 시간초과가 발생하였다.주어진 조건의 범위를 보고 이진탐색도 생각하였지만,이진탐색보다 슬라이싱을 먼저 선택한 이유는이진탐색은 매번 배열을 확인하여 시간 관리 측면에서 좋지 않을 것이라고 생각했다.이는 for문에서의 시간 복잡도만 생각하고 슬라이싱하여 max를 구하는 시간을 고려하지 않아서이다.max를 하는 경우 O..
2024.11.08 -
[BOJ_Python] 20055. 컨베이어 벨트 위의 로봇
문제https://www.acmicpc.net/problem/20055 사용 알고리즘구현, 순환 큐(deque - rotate) 풀이코드 흐름1. belt 회전 - belt의 start 시점 이동 - belt 회전에 따른 로봇 이동 이때의 로봇이동은 belt와 함께 가는 것이기 때문에 내구도가 약화되지 않음 또한, 내리는 지점에 도달하였으면 박스를 내리며, 시작지점은 비어있음2. 로봇의 이동 - 이동할 곳의 내구도, 현재 위치의 로봇 여부, 이동할 곳의 로봇 여부 확인 - 이동이 가능할 경우 로봇 이동과 내구도 약화 진행 - 내리는 지점 도달 여부 확인 및 로봇 내리기 진행3. 새로운 상자 올리기 - 내구도 확인 후 새로운 상자 올리기4. belt의 내구..
2024.11.07 -
[Softeer_Python]Lv3. 나무 섭지
문제https://softeer.ai/practice/7726 사용 알고리즘BFS 풀이고려사항1. 남우가 갈 수 있는 곳과 유령이 갈 수 있는 곳이 다름2. 남우와 유령 각각의 탈출구까지 최단거리 후기1. 이 문제는 기본 BFS이지만 2가지 깨달은 점이 있다.2. 첫번째로 너무 BFS 틀에 갇혀있었다는 점이다.유령의 경우 가지 못하는 곳이 없으니 탈출구까지 굳이 BFS가 아닌 좌표 차(abs)를 활용하면 무척 간단한 점을 놓쳤다.이렇게되면, 유령이 많거나 N, M이 크더라도 상관없는 문제였다.3. 유령이 없을 수도 있는데 무조건 있다는 가정하에 풀이를 진행하였다.이전 문제 아파트에서도 주어진 조건이 아닌 나의 틀에 박혀 진행했던 적이 있었다.가장 기본이 되는 예외를 계속 놓치고 있다고 생각들었다. 4. ..
2024.10.31