알고리즘(45)
-
[Xcode] Xcode에서 Python 알고리즘 환경 구축하는 방법 (feat. Xcode 15.4 버전)
이번 글에서는 Xcode로 Python 환경을 구축하는 방법에 대해 설명해 볼 거다.각 단계별로 차근차근 하나씩 어떤 과정을 거치는지 자세하게 다뤄볼 거고,이 글을 작성하고 있는 시점(24.09.06)에서 맥북 M1 칩 기반의 Xcode 버전은 15.4, Python 버전은 3.12로 환경을 세팅하고자 했다는 점 참고하자!1. Xcode에서 "Other-External Build System" 타입의 프로젝트를 생성한다.2. Product Name을 설정하고, python이 위치한 경로를 Build Tool로 지정해 주자.💡 Python이 위치한 경로는 터미널에 where python3 명령어를 입력해서 확인할 수 있다.3. 테스트하고 싶은 파이썬 파일(.py)을 "macOS-Empty" 타입으로 생성..
2024.09.06 -
[Leetcode/Medium] 중복 문자 제거 (316. Remove Duplicate Letters, Swift)
https://leetcode.com/problems/remove-duplicate-letters/description/ 🤔 문제 설명문자열이 주어지면 모든 문자가 "한 번"만 나타나도록 중복된 문자를 제거한 후, "만들어지는" 모든 문자열 중에서 결과가 사전 순서 (Lexicographical order)에서 가장 작은 것인지 확인하라.*사전 순서 (Lexicographical order)의 의미 : a는 b보다 사전적으로 작다. + 문자 "ab"와 "abc"가 있다면 "ab"가 사전적으로 더 작다.s = "bcabc"// "abc"s = "cbacdcbc"// "acdb" // 중복된 문자를 제거한 "abcd"를 사전 순으로 재정렬하라는 의미가 아님.// 주어지는 문자열의 순서는 유지되는 상황에서 ..
2024.07.14 -
[Leetcode/Medium] 일일 온도 (739. Daily Temperatures, Swift)
https://leetcode.com/problems/daily-temperatures/ 🤔 문제 설명매일의 화씨온도 리스트 temperatures를 입력받아서, 더 따뜻한 날씨를 위해서는 며칠을 더 기다려야 하는지를 구하라.만약, 현재로부터 더 따뜻한 날이 이후에 없을 경우에는 Array에 0을 담아 출력한다.temperatures = [73,74,75,71,69,72,76,73]// [1,1,4,2,1,1,0,0] 💡 풀이(Index, temperature)로 이루어진 튜플(Tuple)과 스택(Stack)을 함께 활용해서 문제를 풀었다.기본 스택의 원칙은 스택의 top값과 반복 중인 현재 온도를 비교해서 더 따뜻한 날씨가 들어온 경우에는 pop을 한다는 것이다.그리고 인덱스의 차이값을 활용해서 따..
2024.07.14 -
[Leetcode/Easy] 유효한 괄호 (20. Valid Parentheses, Swift)
https://leetcode.com/problems/valid-parentheses/description/ 🤔 문제 설명괄호 '(', ')', '{', '}', '[', ']'로 되어있는 문자열이 주어지면 아래와 같은 규칙에 맞아 유효한지를 판단하라.열린 괄호는 동일한 유형의 괄호로 닫아야 한다. -> '(' 괄호인 경우, ')' 괄호로 닫아야 한다.열린 괄호는 올바른 순서로 닫아야 한다. -> '({' 괄호인 경우, '})' 괄호 순서대로 닫아야 한다. 💡 풀이스택(Stack) 자료형을 사용한다면 풀 수 있는 문제였다.문자열을 하나씩 반복하면서 볼 수 있는 경우는 크게 두 가지. 열린 괄호가 오는 경우와 닫힌 경우가 오는 경우이다.열린 괄호가 오는 경우에는 스택에 push해준다.닫힌 괄호가 오는 ..
2024.07.12 -
[Leetcode/Medium] 홀짝 연결 리스트 (328. Odd Even Linked List, Swift)
https://leetcode.com/problems/odd-even-linked-list/ 🤔 문제 설명연결 리스트를 홀수 노드 다음에 짝수 노드가 오도록 재정렬하라.단, 공간 복잡도 O(1), 시간 복잡도 O(n) 안에 문제를 풀어야 한다.head = [1,2,3,4,5]// [1,3,5,2,4] 💡 풀이내가 생각한 방법은 이렇다.head 연결 리스트에서 홀수번째에 있는 값은 odd라는 연결 리스트로, 짝수번째에 있는 값은 even이라는 별도의 연결 리스트로 연결을 한다.head 연결 리스트를 반복하면서, 각각 2칸씩 건너뛰면서 연결 리스트를 추가한다. + 이동까지(홀수 노드의 경우 : oddNodes.next = oddNodes.next.next / 짝수 노드의 경우 : evenNodes.nex..
2024.07.11