전체 글(48)
-
[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 -
[BOJ_Python]31797. 아~파트 아파트
문제https://www.acmicpc.net/problem/31797 사용 알고리즘구현, 시뮬레이션 풀이후기1. 큰 어려움 없는 문제였다. 다만, 놓치기 쉬운 부분을 다시 깨닫게 해주는 문제이다.처음에는 당연히 1 ~ 2N 사이의 숫자들로만 층이 구성된다고 생각하고 구현하였다.하지만 계속 오답이였고, 이는 그런 조건이 없다는 것을 깨닫고 너무 당연하게 제한을 두었다는 걸 알게되었다.처음에는 2N 크기의 리스트를 만들어서 풀었지만,문제를 깨닫고 빈 리스트에 append 후, 층을 기준으로 정렬하는 방법을 사용했다. 2. 이후 술을 마실 사람을 찾는 방법은 두가지로 구현하였다.2 - 1. 처음 떠오른 방식은 list형식의 인덱스로 접근하는 것이고, 시간효율성은 높지만 직관성이 조금 떨어진다.2 - 2. 다..
2024.10.26 -
[Programmers_Python]단어 변환
문제https://school.programmers.co.kr/learn/courses/30/lessons/43163사용 알고리즘BackTrackingBFS 풀이고려사항1. answer 변수 global 설정2. 단어에서 한 부분만 다른지 확인3. 지금 경로가 이미 최적 해를 넘었다면 이후 탐색은 필요 없음4. target 도착 여부 확인 후기1. 프로그래머스로 재귀나 백트래킹 등 함수를 만들어서 풀때 변수의 생명주기를 관리하는 것이 까다롭다.백준의 경우 solution 함수가 따로 존재하지 않고 가장 밖에서 다른 함수를 호출하면 되기 때문에가장 밖에 위치하고 있는 변수를 계속 함수에 매개변수로 들고 들어가지 않아도 관리 할 수 있지만,함수에서 생긴 변수를 다른 함수에서 사용 할 때는 따로 관리해주어야 ..
2024.10.17 -
[BOJ_Python]1913. 달팽이
문제https://www.acmicpc.net/problem/1913 사용 알고리즘구현 풀이고려사항1. 방향 변경 타이밍 확인2. 방향 변경 후기1. 내가 처음 푼 풀이는 조건이 너무 까다로워 다른 풀이를 찾던 중 더 깔끔한 조건의 풀이를 발견했다. 2. 우선, 나의 풀이는 안쪽 가운데 1부터 시작하여 시계방향으로 이동한다.방향을 제공하며 step을 확인하며 방향 변화 여부를 확인하고, flag를 확인하며 step의 수를 늘린다.우선 가야하는 step은 방향전환 2번마다 1씩 증가한다.때문에 Flag를 두어 방향 전환 시마다 토글 형식으로 변경하고 확인하였다.3. 마지막 출력 시 하나하나 for문을 돌며 해당 숫자가 target이 맞는 지 확인하며 출력하는 것보다배열을 채울 때 확인해서 저장해두고 배열 ..
2024.10.17