728x90 분류 전체보기302 [Algorithm] 기수 정렬(Radix Sort) 알고리즘(Swift 구현) [Algorithm] 기수 정렬(Radix Sort) 알고리즘(Swift 구현) 1. 기수 정렬이란? 기수 정렬은 계수 정렬과 비슷한 면이 있다. 계수 정렬은 인덱스를 활용해서 새로운 배열을 만들어 차례로 정렬을 시켜주는 알고리즘인데, 기수정렬은 이와 비슷하게 비교연산을 수행하지 않고 데이터의 각 자릿수를 낮은 자리수부터 가장 큰 자리수까지 올라가면서 정렬을 수행해준다. 그렇기 때문에 문자열에도 적용이 가능한 정렬방법이다. 하지만 '자릿수'가 존재하지 않는다면 데이터를 기수정렬로 정렬하는 것이 불가능하다. 2. 기수 정렬 var array = [51, 3(1), 29, 3(2), 33, 105] 가 있다고 가정해보자! (3이 2개가 있는데 이는 안정 정렬인지를 보기 위함이다. 그냥 둘 다 정수 3으로 생.. 2023. 3. 8. [Swift] 프로그래머스 짝지어 제거하기(lv. 2) [Swift] 프로그래머스 짝지어 제거하기(lv. 2) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12973 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 짝을 지어 제거하는 것이기 때문에, 스택에 쌓았을 때, 이전에 쌓여있던 것과 새로 들어올 것이 같으면 removeLast()를 활용해서 같은 것들을 골라낼 수 있다. 앞에서부터 없애가는 것이기 때문에 이 방법을 활용할 수 있는 것이다. 마지막에 stack에 어떤 것이 남아있다면, 더이상 제거가 불가능한 것이고, stack.. 2023. 3. 7. [Swift] 프로그래머스 다음 큰 숫자(lv. 2) [Swift] 프로그래머스 다음 큰 숫자(lv. 2) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12911 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 다음 큰 수의 정의는 이진수에서 1의 개수가 같으나, 십진법에 따르면 이전 수보다 더 큰수를 의미한다. 예를 들어 8이 주어진다면, 이진법으로 1000(2) 이고, 그 다음으로 큰 수는 10000(2) 즉, 16이 다음 큰 숫자가 되는 것이다. 일단 1을 카운팅하는 변수를 두고, 현재 숫자에 1을 더하고, 그것을 이진수로 .. 2023. 3. 6. [Swift] 프로그래머스 피보나치 수(lv. 2) [Swift] 프로그래머스 피보나치 수(lv. 2) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12945 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 피보나치 수는 항이 커질 수록 감당하지 못하는 수로 발전하는 측면이 있다. n이 10만까지 주어지기 때문에 이 부분을 잘 생각해야 한다. 문제에서는 1234567로 나눈 나머지를 반환하라고 했는데, 여기서 중요한 것은, 항상 An+1 항을 구할 때마다 1234567로 나누는 것과 구하고자 하는 An 항을 모두 구하고 나서 1.. 2023. 3. 3. [Swift] 프로그래머스 이진 변환 반복하기(lv. 2) [Swift] 프로그래머스 이진 변환 반복하기(lv. 2) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/70129 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 반복의 횟수는 모르겠지만, 주어진 조건 1, 2 대로 계속 숫자를 깎아서 결국 "1"이 될 때 까지 내부의 반복문을 몇 번을 거쳤는지만 파악하면 된다. while문을 활용하여 없어진 0의 개수를 count 하여 누적합 처리하고, 필터를 사용하여 "1"로만 구성되게 한 다음, 그 문자열의 길이를 다시 이진수로 변환하는 .. 2023. 3. 2. [Swift] 프로그래머스 올바른 괄호(lv. 2) [Swift] 프로그래머스 올바른 괄호(lv. 2) 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 lv. 2 초반이라 lv. 1보다 쉬운 레벨의 것이 나오기도 한다. 스택의 개념을 잘 생각하면 풀 수 있는 문제이다. 스택으로 해서 직접 괄호를 넣었다 뺐다가 할 수도 있지만, count 개념을 넣어서 할 수도 있다. "(" 가 들어오면 +1을 하고, ")"가 들어오면 -1를 하는 것. 그런데 전체적으로 합쳐지면 ")("도 .. 2023. 3. 1. 이전 1 ··· 7 8 9 10 11 12 13 ··· 51 다음 728x90