ETC/Algorithm(25)
-
[프로그래머스] 행렬 테두리 회전하기
👊🏻 문제 rows x columns 크기인 행렬이 있습니다. 행렬에는 1부터 rows x columns까지의 숫자가 한 줄씩 순서대로 적혀있습니다. 이 행렬에서 직사각형 모양의 범위를 여러 번 선택해, 테두리 부분에 있는 숫자들을 시계방향으로 회전시키려 합니다. 각 회전은 (x1, y1, x2, y2)인 정수 4개로 표현하며, 그 의미는 다음과 같습니다. x1 행 y1 열부터 x2 행 y2 열까지의 영역에 해당하는 직사각형에서 테두리에 있는 숫자들을 한 칸씩 시계방향으로 회전합니다. 다음은 6 x 6 크기 행렬의 예시입니다. 이 행렬에 (2, 2, 5, 4) 회전을 적용하면, 아래 그림과 같이 2행 2열부터 5행 4열까지 영역의 테두리가 시계방향으로 회전합니다. 이때, 중앙의 15와 21이 있는 영역은..
2021.07.16 -
Brute Force, 퇴사
안녕하세요. 알고리즘 공부하기 정말 ... 좋네요 ...ㅎㅎㅎ 오늘은 백준의 '삼성 SW 역량 테스트 기출 문제' 문제집에 있는 문제 중 하나인 '퇴사'를 가져와보았습니다. 이 문제의 해결법을 먼저 말해보자면, Brute Force 알고리즘으로 짜보았어요. Brute Force는 무식한(brute) + 힘 (force) 라는 의미로, 무식하게 밀어붙인다? 쯤 ...? 인 것 같아요. 완전 탐색 알고리즘으로 모든 경우의 수를 탐색하게 됩니다. 이 알고리즘은 정답만을 출력하기 때문에, 믿을만한 알고리즘이죠. 문제는 아래와 같습니다. 문제 상담원으로 일하고 있는 백준이는 퇴사를 하려고 한다. 오늘부터 N+1일째 되는 날 퇴사를 하기 위해서, 남은 N일 동안 최대한 많은 상담을 하려고 한다. 백준이는 비서에게 ..
2021.03.07 -
Greedy, 구명보드
안녕하세요. 최근에 알고리즘 공부를 다시 시작했는데, 다시 시작한 김에 C++ 로 언어를 바꿔보았습니다. 확실히 코딩하는 시간이나 습득하는 시간 등 장점이 많다고 느꼈어요. 지인 분들이 왜 python으로 안하냐고들 하는데 그러게요 ... 마지막 욕심일지두 희희 오늘은 프로그래머스의 Greedy 문제인 구명보드를 풀어보고자 합니다. 참고로 Greedy는 지난 포스팅에서 개념을 확인할 수 있습니다. 일단 문제는 아래와 같습니다. 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 50kg]이고 구명보트의 무게 제한이 100kg이라면 2번째 사람과 4번..
2021.02.28 -
DFS - Depth First Search
오늘은 너비우선 탐색을 알아보겠습니다. DFS는 BFS와 같이 배우는 경우가 많은데요. BFS는 지난 포스팅에서 다루었기 때문에 필요하다면 참고해보셔도 좋을 것 같아요 〰️ DFS❓ DFS는 Depth First Search의 약자입니다. 너비 우선 탐색으로, 연결되어 있는 모든 노드를 전부 확인하고 그 다음 노드의 모든 노드를 살펴보는 방식으로 모든 노드를 탐색하는 방식이죠. DFS와 BFS의 비교는 지난 포스팅에서 이미 다뤘기 때문에 생략하겠습니다. DFS 구현 노드들이 연결되어 있다고 가정하겠습니다. 아래의 그림에서 왼쪽은 보기 편하게 도식화한 모습이고, 오른 쪽의 위는 linked List로 구현되어 있는 모습을 표시했습니다, Visited는 Boolean 타입의 Array입니다. 위의 그림에서 ..
2020.09.20 -
DFS/BFS - 단어 변환
프로그래머스 문제인 '단어 변환'을 해결해 봅시다. 문제를 먼저 살펴보도록 할게요. 문제 설명 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 있습니다. 2. words에 있는 단어로만 변환할 수 있습니다. 예를 들어 begin이 hit, target가 cog, words가 [hot,dot,dog,lot,log,cog]라면 hit -> hot -> dot -> dog -> cog와 같이 4단계를 거쳐 변환할 수 있습니다. 두 개의 단어 begin, target과 단어의 집합 words가 매개변수로 주어질 때, 최소 몇 단계의 과..
2020.09.11 -
DFS - Network
오늘은 프로그래머스에서 제공하는 문제인 Network 를 다뤄보겠습니다. 문제는 아래와 같습니다. 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하시오. 제한사항 컴퓨터의 개수 n은 1 이상 200 이하인 자연수입니다. 각 컴퓨터는 0부터 n-..
2020.09.09