2021/02

    [LeetCode] String (2)

    String 타입 문제의 두 번째 시간. 1. Valid Anagram Anagram이라는 말을 처음 들어봤을 것이다. 아래의 예를 봐보자. "하녕안요세" 이 단어를 보면 생각나는 말이 있는가?? 배치를 좀 다르게 하면 "안녕하세요"가 된다. Anagram은 해리포터에서도 등장했었는데, TOM MARVOLO RIDDLE를 풀면 "I AM LORD VOLDEMORT" 로 바뀌는 장면이 있었다. 즉, A로 B를 만들 수 있는지를 체크하면 되는 문제이다. 이를 위해서는 원소의 갯수가 동일한지 파악해보면 된다. 바로 코드로 가자. class Solution { func isAnagram(_ s: String, _ t: String) -> Bool { // key & value로 묶기 위해 dictionary 사..

    [LeetCode] Strings (1)

    String 데이터 타입에 대한 문제들을 풀이해볼 것 이다. 1. Reverse String 말 그대로 문자열을 뒤집는 것이 문제이다. "ABCD"일 때, "DCBA"가 되도록 하는 것이다. 바로 코드로 봐보자. class Solution { func reverseString(_ s: inout [Character]) { // 그냥 s.reverse() 사용하면 풀리긴 함..! // 좌/우 인덱스를 정해준다. var left = 0 var right = s.count - 1 // 만나는 순간 끝낼 수 있도록 while left < right { // left 값 저장해두고 var temp = s[left] // left 값을 right 값으로 변경하고 s[left] = s[right] // 저장해둔 le..

    [LeetCode] Array (4)

    Array 파트 마지막 풀이! ------------------ 1. Best Time to Buy and Sell Stock II 주식을 사고 파는데 있어 저점에 사서 고점에 팔아 최대 이익을 남기기 위한 문제! 다음 원소의 가격보다 싸면 사서 팔아주면 된다! 바로 코드로 봐보자. class Solution { func maxProfit(_ prices: [Int]) -> Int { // 결과값 저장을 위한 변수 생성 var total = 0 var cnt = prices.count // 배열을 돌면서 저점 매수 고점 매도 진행 for i in 1.. [Int] { // nums1을 기준으로 Key와 Value 세팅 var standNums = Dictionary(nums1.map {($0, 1)}, ..

    [LeetCode] Array (3)

    오늘은 한 문제 풀이..! 1. Rotate Image 말 그대로 이미지를 시계방향으로 회전시키는 것이 목표이다. 이미지는 수의 배열들로 표현이 되기에, 결국엔 Matrix를 회전시키는게 목표이다! 머신러닝 공부를 하면서 transpose 개념을 조금 접해서 그런지 transpose하는 방법으로 생각해보았다. (numpy T 사용하고 싶은 욕구..) 우선 예시로 이해해보자. // Input 배열 [ 1, 2, 3 ] [ 4, 5, 6 ] [ 7, 8, 9 ] // Output 배열 [ 7, 4, 1 ] [ 8, 5, 2 ] [ 9, 6, 3 ] // 수행 과정 [ 1, 2, 3 ] [ 4, 5, 6 ] [ 7, 8, 9 ] // 1. 먼저 transpose [ 1, 4, 7 ] [ 2, 5, 8 ] [ ..

    [LeetCode] Array (2)

    Array 문제 풀이 두 번째 시간! 1. Rotate Array 배열을 회전시킨다...? 무슨 뜻일까.. 회전이라기 보다는 배열의 마지막 원소를 가장 맨 앞으로 옮기는 작업 요구하고 있다! (k의 수 만큼 원소들을 이동해줘야 한다.) // k = 3 [1,2,3,4,5,6,7,8] // [6,7,8,1,2,3,4,5] 가 된다. // [8,1,2,3,4,5,6,7] // [7,8,1,2,3,4,5,6] // [6,7,8,1,2,3,4,5] // 위 프로세스로 수행이 되는 형태이다! 하나씩 옮기면 될 것 같은 생각이 든다. class Solution { func rotate(_ nums: inout [Int], _ k: Int) { // k가 0이면 움직일 필요 없음 if (k == 0) { return..

    [LeetCode] Array (1)

    LeetCode내 Easy모음집에서 먼저 풀이를 해볼 예정입니다~! 풀면 풀수록 먼저 문제를 정확하게 이해하는 것이 중요하다는 것을 깨닫습니다... 우선 Array내에 풀고 싶은 문제들 먼저~! 1. Remove Duplicates from Sorted Array 배열 내의 중복된 원소들을 제거하는 것이 목표이다. 다만 새로운 배열을 만들지 않고(복사X) 기존 배열을 재배치하는 것이 주 포인트이다. [1,1,2,3,3,3] // [1,2,3]을 리턴해야함 그리고 기본적으로 배열들은 오름차순으로 정렬되어있는 상태이기에, 중복된 원소만 신경쓰면 된다. class Solution { func removeDuplicates(_ nums: inout [Int]) -> Int { // 길이 0일때, 예외처리 if ..