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"] 이..
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..
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"] 문제를 보고 아 이번문제도 문자열을 뒤집는 문제구나 잠깐! 생각을 했음.. 알고리즘 문제가 그렇게 간단할리 없지.. 문제를 자세히 보면 리턴 없이! , 리스트 내부를 직접 조작! 이라는 말이 있다. 즉 이 문제는 새로운 배열을 할당하지 말고 배열의 포인터를 사용해서 배열 안의 ..
[그림으로 배우는 자료구조] 스택이란? 스택에 대해서 배우기 전에 먼저 책들이 담긴 상자를 떠올려 봅시다. 자 이제 긴 박스에 담긴 책을 비우고 다시 새책을 3권 넣어보겠습니다. A, B, C 책 3권이 긴 박스에 들어갔습니다. 이제 긴 박스에서 책을 꺼내 보겠습니다. 제목이 A라는 책을 꺼내서 보고 싶은데 위에 B와 C라는 책이 있어서 A 책을 바로 꺼낼 수 가 없습니다. 그럼 어떻게 해야 할까요? C책을 먼저 꺼내고, B책을 꺼낸 후, A 책을 꺼내면 되겠죠? 스택도 긴 박스에 책을 하나씩 넣고 빼는것과 동일한 구조입니다. 스택에 데이터를 하나씩 순서대로 넣을 수 있고, 데이터를 꺼낼 때는 제일 마지막에 넣은 데이터부터 꺼낼 수 있습니다. 이러한 스택의 구조적인 특징을 LIFO(Last In Fris..
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. 팰린드롬이란 거꾸로해도 똑같은 문자열이 되는 문자열이 되는 문장을 뜻함. 한글로 예를 들면 토마토, 기러기 같은 단어들이 있지. 주어진 문제가 대소문자를 구분하지 않고, 영문자와 숫자만을 대상으로 하는 ..
[그림으로 배우는 자료구조] 연결 리스트란? 이번 시간에는 연결 리스트에 대해서 학습해봅시다. 학자들은 변수를 많이 만들어 사용하는 대신에 하나의 배열을 선언해서 같은 종류의 많은 양의 데이터를 그룹핑해서 작업을 했습니다. 그런데 문제가 발생했습니다. 배열 안의 데이터 개수가 많아 질수록 특정 요소를 삭제하거나 특정 위치에 요소를 삽입 할때 기존의 요소들이 이동되면서 오버헤드가 점점 심해졌기 때문입니다. 예를 들어 숫자 종류만 담을 수 있는 배열에 숫자가 1,000개가 있다고 가정하면, 이 배열에 존재하는 특정 숫자를 삭제하거나 다른 숫자를 특정 위치에 삽입할때 수백개의 요소가 이동을 해야합니다. 학자들은 어떻게 하면 배열의 단점을 보완할지 고민을 했습니다. 고민 끝에 학자들은 연결 리스트라는 자료구조를..