전체 글

Algorithm

Swift로 Leet Code 문제 풀기 - 21. Merge Two Sorted Lists (Easy)

아주 오랜만에 풀어보는 Leet Code~ 영어를 너무 오랜만에 봐서 머리가 띵하다. 21번 문제인 Merge Two Sortes Lists는 이미 오름차순 배열이 완료된 두개의 ListNode를 합쳐서 새로운 ListNode를 만들어내는 문제였다. 이것 또한 예시를 보면 바로 이해가 되었다. 처음에는 '아 뭐야~~ 배열 두개 그냥 더해서 sort 한 번 돌리면 되겠네~~' 싶었는데 func의 인자를 보니 타입이 ListNode 형이라 1차 당황, 생겨먹은게 내가 자료구조 시간에 배웠던 linked list와 똑같아서 2차 당황... 재귀 함수가 무의식적으로 생각났는데 억지로 밀어 놓고 다른 방법으로 풀었다. func mergeTwoLists(_ list1: ListNode?, _ list2: ListN..

Algorithm

Swift로 Leet Code 문제 풀기 - 14. Longest Common Prefix (Easy)

14번 문제는 주어진 단어 배열에서 공통으로 나타나는 prefix를 찾아서 반환하는 문제였다. 예시를 보면 바로 이해할 수 있다. 1번 예시를 보면 strs로 받은 단어 세 개의 공통 prefix인 fl이 output으로 반환된다. 2번은 공통 prefix가 존재하지 않으므로 ""를 반환한다. 내가 푼 방법 1. 각 단어의 글자를 하나씩 돌면서 같은 글자면 result에 추가, 하나라도 다른 게 나오면 바로 결과를 return 생각은 간단했는데 코드는 그렇지 못했네..ㅎㅋㅎㅋ class Solution { func longestCommonPrefix(_ strs: [String]) -> String { var result: String = "" var index: Int = 0 while true { v..

Algorithm

Swift로 Leet Code 문제 풀기 - 13. Roman to Integer (Easy)

13번 문제는 로마 숫자를 실제 숫자로 변환하는 문제였다. 로마 숫자 심벌마다 정해진 value가 있다. (I, V, X만 알았는데 다른 것도 다 실제로 있는 건가...?) 그리고 또 하나의 조건이 더 있다. 4, 9, 40, 90, 400, 900은 표기 조건이 달랐다. 4면 IIII가 아니라 IV으로 표기하는..? 예시를 하나 확인해보자. Input으로 MCMXCIV라는 문자열이 들어왔을 때 M은 1000, CM은 900, XC는 90, IV는 4로 치환되어 결과값이 1994가 된다. 그냥 기본 로마 숫자만 들어오면 참 좋을 텐데.. 각 자릿수를 확인하는 게 포인트였던 것 같다. 내가 푼 방법 1. 일단 문자열을 봤을 때 IV, IX, XL, XC, CD, CM가 존재하는 경우 결과값에 미리 더한 후..

Algorithm

Swift로 Leet Code 문제 풀기 - 9. Palindrome Number (Easy)

Palindrome 문제. 주어진 int형 정수가 Palindrome인지를 판별하면 된다. Palindrome이 무엇인가, 예제를 보면 바로 알 수 있다. 121은 뒤집어도 121이다. 그럼 이 정수는 Palindrome이다. 오디오나 일요일, 내 이름은 이효리, 거꾸로 해도 이효리 그런 느낌. 내가 푼 방법 대학교 알고리즘 수강시간에 스택으로 배웠던 게 바로 생각났는데, swift니까.. 그냥 있는 메서드를 써보자! 싶었다. 그래서 생각해 냈던 건 1. Int로 들어오는 정수를 String으로 변경하고 2. String으로 변경된 값을 reversed로 뒤집은 다음에 3. 그 뒤집은 수를 Int로 변경해서 기존에 받는 수랑 비교한다. class Solution { func isPalindrome(_ x..

Algorithm

Swift로 Leet Code 문제 풀기 - 1. Two Sum (Easy)

1번 문제는 주어진 int형 배열 nums와 target인 정수를 받아서 풀어야 하는 문제. nums 배열 중 두 요소의 합이 target이 되는 경우 두 수의 index를 int형 배열로 반환하면 된다. You may assume that each input would have exactly one solution, and you may not use the same element twice. You can return the answer in any order. 무조건 하나의 답이 존재하고 배열 요소 하나를 두 번 더하면 안 된다. 정답의 index 순서는 상관없는 것 같다. 예시로 확인해보면 nums로 받은 배열 중 두 요소의 합이 9가 되는 경우는 2와 7을 더한 경우이므로 두 값의 index인 ..

Algorithm

[iOS] Swift 알고리즘 문제 풀기 - input 입력 받기

작년에 알고리즘 문제 좀 풀어봐야 하지 않나 싶어서 알고리즘 문제에 기웃댔었다. 회사 다니기 전에는 자바로 풀었었는데 이젠 그나마 자바도 까먹어서 오로지 Swift로만 승부를 봐야 하는 상태... 근데 앱 개발할 때는 input을 UI로 입력받아서 몰랐는데 알고리즘 풀려고 생각해보니 콘솔에서 input을 입력을 받아본 적이 없었다. 그래서 찾아본 swift input 입력 받는 법! (playground는 안된다... xcode를 켜야 한다..) 우선 xcode를 켜서 'Create a new Xcode project'를 클릭한다. 그 후에 macOS - Command Line Tool을 선택해서 프로젝트를 생성한다. 프로젝트를 생성하면 main.swift가 생성된다. 파일 열어보니 아주 익숙한 'Hel..

eunjuicy
TIL