본문 바로가기

전체 글380

swift 리트코드 문제풀이 - leetcode 42 빗물 트래핑 swift 리트코드 문제풀이 - leetcode 42 빗물 트래핑 leetcode 42. Trapping Rain Water 문제 높이를 입력받아 비 온 후 얼마나 많은 물이 쌓일 수 있는지 계산하라. 처음 문제를 보고 이해하는데 시간이 좀 오래 걸렸다. 일단 주어진 파라미터는 벽 높이가 담긴 배열 하나 이다. [0,1,0,2,1,0,1,3,2,1,2,1] 이 배열에서 하나하나의 숫자는 벽의 높이라는것을 알아두자. 그럼 조건을 한번 생각보자. 조건1. 벽과 벽사이에 빗물이 찰 수 있는 공간이 있어야 될것 같다. 여기서 중요한건 벽과 벽사이!! 그림에서 보면 첫번째 공간에도 빗물이 차야될것 같지만 그렇지 않다. 왜냐면 오른쪽 벽(index1) 만 존재 하기 때문이다. index 1번과 index 3 번째 .. 2022. 7. 26.
swift 리트코드 문제풀이 - leetcode 1 두 수의합 swift 리트코드 문제풀이 - leetcode 1 두 수의합 leetcode 1. Two Sum 문제 덧셈하여 타겟을 만들 수 있는 배열의 두 숫자 인덱스를 리턴하라. 예제 1: Input: nums = [2,7,11,15], target = 9 Output: [0,1] 예제 2: Input: nums = [3,2,4], target = 6 Output: [1,2] 예제 3: Input: nums = [3,3], target = 6 Output: [0,1] 이번 문제의 난이도는 어려운 편은 아닌듯. 주어진 파리미터는 두개임. 배열 = [2,7,11,15] 과 타겟숫자 9. 배열안의 숫자 2개를 더해서 9가되는 숫자 두개를 배열로 반환하면 됨. 바로 생각난 아이디어는 기준 숫자를 하나 정하고, 기준 숫자.. 2022. 7. 26.
swift 리트코드 문제풀이 - leetcode 49 그룹 애너그램 swift 리트코드 문제풀이 - leetcode 49 그룹 애너그램 leetcode 49. Group Anagrams 문제 문자열 배열을 받아 애너그램 단위로 그룹핑을 하세요. 예제 Input: strs = ["eat","tea","tan","ate","nat","bat"] Output: [["bat"],["nat","tan"],["ate","eat","tea"]] 일단 애너그램이라는 용어가 생소할 수 있는데, 쉽게말하면 하나의 단어가 있으면 이 단어의 문자를 재배열 해서 다른 뜻을 가진 새로운 단어로 바꾸는 것임. [nat, tan] 을 보면은 a, n, t 문자가 하나씩 똑같이 들어있는것을 알 수 있음. 그리고 순서만 바뀌어서 그룹핑되어 있다는 것을 캐치할 수 있음. 그래서 단순히 떠오르는 아디어는 .. 2022. 7. 24.
swift 리트코드 문제풀이 - leetcode 819 가장 흔한 단어 swift 리트코드 문제풀이 - leetcode 819 가장 흔한 단어 leetcode 819. Most Common Word 문제 금지된 단어를 제외한 가장 많이 등장하는 단어를 출력하라. 대소문자 구분하지 않고, 마침표, 쉼표 등은 무시한다. 예제 Input: paragraph = "Bob hit a ball, the hit BALL flew far after it was hit.", banned = ["hit"] Output: "ball" 문제파악을 해보자면 가장 많이 등장하는 단어를 출력하는 함수를 만들어야 된다. 인자는 두개가 되겠네. 하나는 "Bob hit a ball, the hit BALL flew far after it was hit." 이런 문자열 값이고 나머지 하나는 ["hit"] 이.. 2022. 7. 23.
swift 리트코드 문제풀이 - leetcode 937 로그 파일 재정렬 swift 리트코드 문제풀이 - leetcode 937 로그 파일 재정렬 문제 leetcode 937 - Reorder Data in Log Files 로그를 재정렬하라. 기준은 다음과 같다. -로그의 가장 앞 부분은 식별자이다. -문자로 구성된 로그가 숫자 로그보다 앞에 온다. -식별자는 순서에 영향을 끼치지 않지만, 문자가 동일한 경우 식별자 순으로 한다. -숫자 로그는 입력 순서대로 한다. -문자 로그는 사전 순으로 정렬한다. 예제1: Input: logs = ["dig1 8 1 5 1","let1 art can","dig2 3 6","let2 own kit dig","let3 art zero"] Output: ["let1 art can","let3 art zero","let2 own kit dig.. 2022. 7. 22.
swift 리트코드 문제풀이 - leetcode 344 문자열 뒤집기 swift 리트코드 문제풀이 - leetcode 344 문자열 뒤집기 문제 문자열을 뒤집는 함수를 작성하라. 입력값은 문자 배열이며, 리턴 없이 리스트 내부를 직접 조작하라. 예제1: Input: s = ["h","e","l","l","o"] Output: ["o","l","l","e","h"] 예제 2: Input: s = ["H","a","n","n","a","h"] Output: ["h","a","n","n","a","H"] 문제를 보고 아 이번문제도 문자열을 뒤집는 문제구나 잠깐! 생각을 했음.. 알고리즘 문제가 그렇게 간단할리 없지.. 문제를 자세히 보면 리턴 없이! , 리스트 내부를 직접 조작! 이라는 말이 있다. 즉 이 문제는 새로운 배열을 할당하지 말고 배열의 포인터를 사용해서 배열 안의 .. 2022. 7. 21.
[그림으로 배우는 자료구조] 스택이란? [그림으로 배우는 자료구조] 스택이란? 스택에 대해서 배우기 전에 먼저 책들이 담긴 상자를 떠올려 봅시다. 자 이제 긴 박스에 담긴 책을 비우고 다시 새책을 3권 넣어보겠습니다. A, B, C 책 3권이 긴 박스에 들어갔습니다. 이제 긴 박스에서 책을 꺼내 보겠습니다. 제목이 A라는 책을 꺼내서 보고 싶은데 위에 B와 C라는 책이 있어서 A 책을 바로 꺼낼 수 가 없습니다. 그럼 어떻게 해야 할까요? C책을 먼저 꺼내고, B책을 꺼낸 후, A 책을 꺼내면 되겠죠? 스택도 긴 박스에 책을 하나씩 넣고 빼는것과 동일한 구조입니다. 스택에 데이터를 하나씩 순서대로 넣을 수 있고, 데이터를 꺼낼 때는 제일 마지막에 넣은 데이터부터 꺼낼 수 있습니다. 이러한 스택의 구조적인 특징을 LIFO(Last In Fris.. 2022. 7. 21.
swift 리트코드 문제 풀기 - leetcode 유효한 팰린드롬 swift 리트코드 문제 풀기 - leetcode 유효한 팰린드롬 주어진 문제 주어진 문자열이 팰린드롬인지 확인하라. 대소문자를 구분하지 않으며, 영문자와 숫자만을 대상으로 한다. 예제1 Input: s = "A man, a plan, a canal: Panama" Output: true 설명: "amanaplanacanalpanama" is a palindrome. 예제2 Input: s = "race a car" Output: false 설명: "raceacar" is not a palindrome. 팰린드롬이란 거꾸로해도 똑같은 문자열이 되는 문자열이 되는 문장을 뜻함. 한글로 예를 들면 토마토, 기러기 같은 단어들이 있지. 주어진 문제가 대소문자를 구분하지 않고, 영문자와 숫자만을 대상으로 하는 .. 2022. 7. 20.
[그림으로 배우는 자료구조] 연결 리스트란? [그림으로 배우는 자료구조] 연결 리스트란? 이번 시간에는 연결 리스트에 대해서 학습해봅시다. 학자들은 변수를 많이 만들어 사용하는 대신에 하나의 배열을 선언해서 같은 종류의 많은 양의 데이터를 그룹핑해서 작업을 했습니다. 그런데 문제가 발생했습니다. 배열 안의 데이터 개수가 많아 질수록 특정 요소를 삭제하거나 특정 위치에 요소를 삽입 할때 기존의 요소들이 이동되면서 오버헤드가 점점 심해졌기 때문입니다. 예를 들어 숫자 종류만 담을 수 있는 배열에 숫자가 1,000개가 있다고 가정하면, 이 배열에 존재하는 특정 숫자를 삭제하거나 다른 숫자를 특정 위치에 삽입할때 수백개의 요소가 이동을 해야합니다. 학자들은 어떻게 하면 배열의 단점을 보완할지 고민을 했습니다. 고민 끝에 학자들은 연결 리스트라는 자료구조를.. 2022. 7. 20.