본문 바로가기

Algorithm

(2083)
(SQL) - LeetCode (easy) 1975. Maximum Matrix Sum https://leetcode.com/problems/maximum-matrix-sum/description구현 문제였습니다.📕 풀이방법📔 입력 및 초기화행 r, 열 c, 음수의 개수 minus_count, 가장 작은 절댓값 min_abs_num, 원소들의 총 합 sum을 선언 후 적절히 초기화합니다.📔 풀이과정1. matrix의 원소를 순회하며 음수의 개수를 minus_count에 세주고 최소 절댓값은 min_abs_num에 저장합니다.📔 정답 출력 | 반환1. minus_count가 짝수라면: 인접한 부분들을 자유롭게 -1로 곱해 부호를 바꿀 수 있으므로 minus_count가 짝수라면 어떻게든 모든 원소를 양수로 만들 수 있습니다. 즉, 2개의 음수가 멀리 떨어져 있더라도 인접한 원소들을..
(SQL) - LeetCode (easy) 1965. Employees With Missing Information https://leetcode.com/problems/employees-with-missing-information/description/union을 사용해본 문제였습니다.📕 풀이방법📔 풀이과정1. employees에서 salaries를 left join하게되면 salaries에만 있는 employee_id의 경우 사라지게 되며 employees에 있는 id만 남게 됩니다. 해당 id들을 distinct select해 줍니다. 2.  반대로 salaries에서 employees를 left join하게되면  employees에만 있는 employee_id가 사라지며 salaries에 있는 id만 남게 됩니다. 해당 id들을 distinct select해줍니다. 3. 두 id들을 union해서 id에 ..
(Python3) - LeetCode (Medium) : 1072. Flip Columns For Maximum Number of Equal Rows https://leetcode.com/problems/flip-columns-for-maximum-number-of-equal-rows/구현 문제였습니다.📕 풀이방법📔 풀이과정같은 형식을 가진 row들을 정리해 map형태로 저장해줍니다.같은 형태란 일방적으로 비트들을 정렬한 후 비교했을 때 두 행의 원소들이 모두 같다는 의미입니다.python에서는 Counter를 이용해 쉽게 패턴의 개수를 저장할 수 있습니다.1. nomalize함수를 선언해 row의 첫 번째 원소를 기준으로 행의 원소들을 xor한 연산 결과로 저장된 tuple들을 반환하도록 구현합니다.예를 들어, row[0]이 0이고 한 행이 [1,0,1] 라면 for loop를 수행해 row[0]과 xor연산하게 되면 행 그대로 반환됩니다. ro..
(Python3) - LeetCode (Medium) 2257. Count Unguarded Cells in the Grid https://leetcode.com/problems/count-unguarded-cells-in-the-grid/description/2차원 배열을 순회하는 것을 구현해본 문제였습니다.📕 풀이방법📔 입력 및 초기화1. m행 n열 2차원 배열 grid를 선언 후 wall은 'W'로 guard는 'G'로 표기해놓습니다. 2. m행 n열 2차원 배열 checked를 선언 후 모두 0으로 초기화합니다. 3. 4방향 동서남북에 대한 dr, dc를 선언 후 방향에 맞게 선언해줍니다. 4. deque 변수 dp를 선언해 줍니다. 5. 정답 변수 answer를 선언 후 0으로 초기화합니다.📔 풀이과정1. guards를 순회하며 각 위치에 해당하는 grid를 'G'로 표시합니다. 또한 이 위치의 checked또한..
(Python3) - 프로그래머스(연습문제): 귤 고르기 https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr정렬 문제였습니다.📕 풀이방법📔 입력 및 초기화1. 정답 변수를 선언 하고 0으로 초기화합니다. 2. 귤 크기와 개수를 저장할 tangerine_map을 선언 후 적절히 초기화합니다. 3. 귤의 개수에 대해 내림차순으로 정렬해줍니다.* k이상 개수만큼 담기만하면 되므로 최소의 종류로 담기 위해서는 해당 정렬이 필요합니다.📔 풀이과정여태 담은 귤의 개수 sum을 선언 후 0으로 초기화합니다. tangerine_map의 원소에 대해 순회하며 ..
(C++, Python3) - 백준(BOJ) : 벽 부수고 이동하기 2 https://www.acmicpc.net/problem/14442bfs 문제였습니다.📕 풀이방법📔 입력 및 초기화1. n행 m열 부술 수 있는 벽 k를 입력받습니다. 2. 2차원 map_input에 지도를 입력받습니다.📔 풀이과정bfs함수를 수행하며 다음을 진행합니다. 1. i행 j열에 방문해 부순 벽의 개수 k개를 검사하기 위해 queue를 선언 후 행,열,부순 벽의 개수를 tuple형태로 push해줍니다.* python의 경우 일반적인 배열로 queue처럼 사용하면 pop때마다 O(n)이 소요되므로 deque를 사용해줍니다. 2. i행 j열에 k개의 벽을 부쉈을 때 최단경로 check배열을 3차원으로 선언 후 각 원소를 0으로 저장합니다.  2. 인접 4방향에 대해 loop를 수행하며 다음을..
(Java, Python3) - 프로그래머스(연습문제): 크기가 작은 부분문자열 https://school.programmers.co.kr/learn/courses/30/lessons/147355?language=python3 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문자열을 다뤄보는 문제였습니다.📕 풀이방법📔 입력 및 초기화1. 정답 변수 answer 선언 후 0으로 초기화합니다. 2. p의 길이를 선언 후 해당 값을 저장합니다.📔 풀이과정p길이만큼 자르기 위해 0부터 t의 길이 - p의 길이까지 for loop를 수행하며 다음을 진행합니다.1. 자른 부분 문자열을 저장해주고 p보다 작다면 answer를 1증가시켜줍니다. 파이썬의 경우 문자열,정수 비교를 모두 📔..
(Python3) - 프로그래머스(연습문제): 카드 뭉치 https://school.programmers.co.kr/learn/courses/30/lessons/159994 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr구현 문제였습니다.📕 풀이방법📔 입력 및 초기화cards1의 index idx1, cards2의 index idx2를 선언 후 0, 0으로 각각 초기화합니다.📔 풀이과정goal의 원소를 순회하며 다음을 진행합니다.1. cards1의 idx1번째 원소가 현재 goal의 문자열과 같다면 바로 뽑아주고 idx1을 1증가시킵니다.2. 이외에 cards2의 idx2번째 원소가 같다면 idx2를 증가시킵니다.3. 1,2번 경우 모두 아니라면 뽑을..