알고리즘 6

[프로그래머스] LV.0 캐릭터의 좌표/ 자바(JAVA), 파이썬(Python)

📜 문제 설명 머쓱이는 RPG게임을 하고 있습니다. 게임에는 up, down, left, right 방향키가 있으며 각 키를 누르면 위, 아래, 왼쪽, 오른쪽으로 한 칸씩 이동합니다. 예를 들어 [0,0]에서 up을 누른다면 캐릭터의 좌표는 [0, 1], down을 누른다면 [0, -1], left를 누른다면 [-1, 0], right를 누른다면 [1, 0]입니다. 머쓱이가 입력한 방향키의 배열 keyinput와 맵의 크기 board이 매개변수로 주어집니다. 캐릭터는 항상 [0,0]에서 시작할 때 키 입력이 모두 끝난 뒤에 캐릭터의 좌표 [x, y]를 return하도록 solution 함수를 완성해주세요. [0, 0]은 board의 정 중앙에 위치합니다. 예를 들어 board의 가로 크기가 9라면 캐릭터..

[Algo] DFS(깊이 우선 탐색)

📌 1. DFS 기본 개념 DFS는 지난번에 포스팅한 BFS와 함께 그래프를 탐색하는 대표적 방법 중 하나로 깊이를 우선으로 하는 탐색법으로 Depth First Search를 의미한다. DFS는 완전 탐색 방법으로 가장 깊은 정점까지 갔다가 해당 경로의 끝 지점에 다다르면 마지막 갈림길로 돌아간다. 마지막 갈림길로 돌아가기 위해 스택 자료 구조를 사용하여 마지막 갈림길을 저장해둔다. 📌 2. DFS 코드로 나타내기 시작정점 cur를 결정하여 방문한다. 정점 cur에 인접한 정점 중에서 방문하지 않은 정점 a가 있다면, 정점 a를 스택에 push하고 정점 a를 방문한다. 그리고 a를 cur로 하여 다시 위 순서를 반복한다. 방문하지 않은 정점이 없으면, 탐색의 방향을 바꾸기 위해서 스택을 pop 하여 가..

[프로그래머스] LV.0 OX게임/ 자바(JAVA), 파이썬(Python)

📜 문제 설명 덧셈, 뺄셈 수식들이 'X [연산자] Y = Z' 형태로 들어있는 문자열 배열 quiz가 매개변수로 주어집니다. 수식이 옳다면 "O"를 틀리다면 "X"를 순서대로 담은 배열을 return하도록 solution 함수를 완성해주세요. 제한사항 연산 기호와 숫자 사이는 항상 하나의 공백이 존재합니다. 단 음수를 표시하는 마이너스 기호와 숫자 사이에는 공백이 존재하지 않습니다. 1 ≤ quiz의 길이 ≤ 10 X, Y, Z는 각각 0부터 9까지 숫자로 이루어진 정수를 의미하며, 각 숫자의 맨 앞에 마이너스 기호가 하나 있을 수 있고 이는 음수를 의미합니다. X, Y, Z는 0을 제외하고는 0으로 시작하지 않습니다. 0 ≤ X, Y ≤ 10,000 1 ≤ quiz의 원소의 길이 ≤ 20 [연산자]는..

[프로그래머스] LV.3 야근 지수 / 파이썬(Python)

📜 문제 설명 회사원 Demi는 가끔은 야근을 하는데요, 야근을 하면 야근 피로도가 쌓입니다. (야근은 나쁘다) 야근 피로도는 야근을 시작한 시점에서 남은 일의 작업량을 제곱하여 더한 값입니다. Demi는 N시간 동안 야근 피로도를 최소화하도록 일할 겁니다. Demi가 1시간 동안 작업량 1만큼을 처리할 수 있다고 할 때, 퇴근까지 남은 N 시간과 각 일에 대한 작업량 works에 대해 야근 피로도를 최소화한 값을 리턴하는 함수 solution을 완성해주세요. 제한 사항 works는 길이 1 이상, 20,000 이하인 배열입니다. works의 원소는 50000 이하인 자연수입니다. n은 1,000,000 이하인 자연수입니다. https://school.programmers.co.kr/learn/cours..

[Algo] BFS(너비 우선 탐색)

📌 1. BFS 기본 개념 BFS는 그래프를 탐색하는 대표적 방법 중 하나로 너비를 우선으로 하는 탐색법으로 Breadth First Search를 의미한다. BFS는 탐색 시작점으로부터 인접한 정점들을 우선으로 차례로 방문하고 방문했던 정점을 시작점으로 하여 다시 해당 정점으로부터 인접한 정점들을 차례로 방문하는 방식이다. 인접한 정점부터 차례대로 모든 정점을 방문하기 때문에 선입선출(FIFO)구조인 큐를 활용하여 코드화할 수 있다. BFS를 활용하여 가까운 곳 부터 먼 곳 순서로 탐색하기 때문에 특정 정점까지 가는 최단거리를 구하는데 용이하다. 📌 2. BFS 코드로 나타내기 def BFS(G, v): # 방문 여부를 확인하기 위한 리스트 visited = [0] * n # 정점들을 차례로 방문하기 ..

[Algo] Greedy Algorithm(그리디 알고리즘)

📌 1. Greedy Algorithm ? 그리디 알고리즘? “A greedy algorithm is an algorithm that shortcuts a full analysis in order to choose quickly an option that appears to work in the situation immediately at hand. They are often used by humans.” - Kim Stanley Robinson Greedy 알고리즘, a.k.a 탐욕 알고리즘 그리디 알고리즘은 다소 단순하게 미래를 내다보지 않고 당장 눈 앞에 보이는 최적의 선택을 하는 방식이다. 목표를 달성하기 위해 매 순간 탐욕적인 선택을 한다. 순간순간 유리한 선택을 하면 되니까 간단하고 빠르다는 ..

반응형