본문 바로가기

자료구조&알고리즘26

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.
[그림으로 배우는 자료구조] 배열이란? [그림으로 배우는 자료구조] 배열이란? 이번 시간에는 배열에 대해서 학습해봅시다. 학자들은 변수를 이용해서 메모리에 값을 쉽게 할당하고 CPU에게 값을 계산을 시켰습니다. 그런데 문제가 발생했습니다. 메모리에 저장해야 될 값의 개수가 많아지면 변수의 수도 많아지게 된것입니다. 달력 기능을 구현할 때를 예를 들면 한달에 1일부터 최대 31일까지 있기 때문에 1부터 31까지 숫자를 저장할 변수를 31개 작성해야했습니다. 학자들은 어떻게 하면 변수를 많이 안쓰고 같은 종류의 데이터를 쉽고 효율적으로 메모리에 저장할 수 있을지를 고민했습니다. 고민 끝에 학자들은 배열이라는 개념을 만들었습니다. 배열은 같은 종류의 데이터를 모아서 메모리에 순서대로 저장하는 기법입니다. 배열은 요소(element)와 색인(inde.. 2022. 7. 19.
[그림으로 배우는 자료구조] 변수란? [그림으로 배우는 자료구조] 변수란? 이번 시간에는 변수에 대해서 학습해봅시다. 컴퓨터는 어떤 일을 잘할까요? 컴퓨터는 값을 저장하고 값을 계산하는 일을 아주 잘합니다. 간단하게 말하면 컴퓨터는 저장하는 일과 계산하는 일에 특화되어 있습니다. 그럼 컴퓨터가 저장과 계산을 하기 위해서 필요한 장치들은 무엇이 있을까요? 바로 CPU, 메모리, 하드웨어가 있습니다. CPU는 값을 계산하는 곳입니다. 메모리는 CPU가 계산해야 될 값, 계산한 값을 임시로 저장하는 곳입니다. 하드웨어는 CPU가 계산한 값을 영구적으로 저장하는 곳입니다. 자료구조를 이해하기 위해서 주목해야 할 장치는 메모리 입니다. CPU에게 계산을 시키려면 값을 메모리에 저장시켜야 합니다. 메모리의 주소공간은 0과1로 이루어진 수많은 숫자로 이.. 2022. 7. 18.