본문 바로가기

algorithm

(13)
[Algorithm/Swift] 프로그래머스(Lv.3) - 표 편집 안녕하세요 제인입니다 :) 연결리스트를 활용하는 문제를 풀어보게 되어 해당 내용에 대해 정리해보려고 하는데요, 문제를 풀이하며 연결리스트(LinkedList)를 Swift로 구현하는 방법에 대해서 간단하게 정리해보겠습니다! 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 처음 접근 저도 처음부터 연결리스트를 써야겠다는 아이디어를 떠올리지 못해 한 번에 맞추지 못했습니다,, 선택된 행을 가리키는 포인터를 두고 명령어 케이스에 따라 알맞은 처리를 할 수 있도록(포인터 이동, 삭제된 행 인덱스 기록 등) 포인터를 이용해 구현하는 방법으로 풀..
[Algorithm/Swift] 프로그래머스(Lv.3) - 파괴되지 않은 건물 안녕하세요 제인입니다 :) 알고리즘 문제를 풀다가 누적합을 이용해 구간의 변화를 효율적으로 계산하는 방법에 대해 새로 알게 되어 문제 풀이와 함께 정리해보려고 합니다. 문제 풀이를 통해 누적합에 대해 정리해보겠습니다. 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 처음 접근 해당 문제는 적군이 특정 건물들을 공격하고 아군이 회복하는 과정을 거쳐 최종적으로 파괴되지 않은 건물의 개수를 구하는 문제입니다. 그렇기 때문에 2차원 배열 요소의 값의 변화를 효율적으로 처리하는 것이 관건입니다! (효율성 테스트 존재) 저는 효율적인 처리 방법에..
[Algorithm/Swift] 프로그래머스(Lv.3) - 스티커 모으기(2) 안녕하세요 제인입니다! 오늘은 문제 풀이를 통해 dp 유형 풀이 과정을 정리해보도록 하겠습니다. 해당 문제를 풀면서 대표적인 dp 유형이라고 생각이 들어 정리해두면 좋을 것 같아서 가져왔습니다! 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 처음 접근 저는 처음에 투포인터로 접근을 했었는데요,, 다른 풀이를 참고해서 dp로 해결한 후 생각해보니까 dp로 풀 수 밖에 없는 문제라는 생각이 드는 것 같습니다..! 처음에 투포인터로 접근한 이유는 start, end 포인터 모두 0에 두고 시작해서 처음으로 떼는 스티커의 인덱스에 start..
[Algorithm/Swift] 프로그래머스(Lv.3) - 입국심사 안녕하세요 제인입니다! 요즘은 프로그래머스의 문제들을 꾸준히 풀면서 취약한 유형의 문제들을 프로그래머스, 백준에서 더 찾아서 연습해보는 방식으로 PS 실력을 꾸준히 향상시키려고 노력하고 있는데요, 오늘은 저번에 문제를 통해 이분탐색 문제를 처음 접하고, 더 연습해보고 싶어서 프로그래머스에서 이분탐색 연습문제를 찾아서 풀어봤습니다! 풀다보니 징검다리 건너기 문제와 비슷한 점이 많은 것 같아서 이분탐색 문제를 접했을 때 접근하는 방법에 대해 기록해두면 좋을 것 같아서 가져와봤습니다 :) 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 일단..
[Algorithm/Swift] 프로그래머스(Lv.2) - 가장 큰 정사각형 찾기 안녕하세요 제인입니다! PS..를 들고 왔습니다....혼자 해결못한 문제가 또 생긴 것이죠..예.. PS 실력이 왜 이렇게 안늘까요....좀 더 많은 문제를 풀어봐야겠어요.. 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 일단 이 문제는 DP(Dynamic Programming) 알고리즘을 이용해 풀어야하는 문제였습니다. 1915번: 가장 큰 정사각형 첫째 줄에 n, m(1 ≤ n, m ≤ 1,000)이 주어진다. 다음 n개의 줄에는 m개의 숫자로 배열이 주어진다. www.acmicpc.net 프로그래머스의 연습문제라 백준에도 동일한..
[Algorithm/Swift] 프로그래머스(Lv.3) - 징검다리 건너기 안녕하세요 제인입니다:) PS로 하루를 힘차게 시작하려고 했는데 이제 할 일을 좀 하고 문제를 풀어야겠어요...ㅇ maxElement { max = maxElement } pointer1 += 1 pointer2 += 1 } return max } 처음에는 투 포인터를 활용해 슬라이딩 윈도우 기법으로 k개의 디딤돌을 한 구간으로 설정해서 전체를 스캔하는 방식으로 풀었습니다. 왜냐하면, 징검다리를 더 이상 건너지 못하게 되는 순간은 적힌 숫자가 0이 되는 디딤돌이 k개 연달아 나오는 경우이기 때문에 길이가 k인 구간 안에서의 최댓값이 해당 구간을 건널 수 있는 사람의 최대 숫자라는 것을 파악했고, 항상 가장 가까운 돌을 밟아야 하므로 한 사람이 건널 때마다 전체 돌의 숫자가 1씩 감소하기 때문에 전체 다리..
[Algorithm/Swift] 이진 탐색(Binary Search) 안녕하세요 제인입니다 :) 오늘은 탐색 알고리즘 중 이진 탐색(Binary Search)이 무엇인지 알아보고 Swift 코드로 구현까지 해보려고 합니다. 이진 탐색 알고리즘의 경우 탐색의 범위가 아주 큰 상황에서 속도를 내서 탐색할 수 있는 방법이니 잘 정리해두면 유용하게 사용할 수 있을 것 같습니다. 바로 시작해볼게요! 이진 탐색이란? 먼저, 이진 탐색이 왜 필요할까요?? 리스트 내에서 원하는 데이터를 찾기 위해 가장 기본적인 탐색 방법인 순차 탐색 방법과 비교하며 이진 탐색을 사용해야 하는 이유에 대해 알아봅시다. 순차 탐색 순차 탐색이란 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 차례대로 확인하는 방법입니다. 보통 정렬되지 않은 리스트에서 데이터를 찾아야 할 때 사용하게..
[Algorithm/Swift] 프로그래머스(Lv.2) - 무인도 여행 안녕하세요 제인입니다! 프로그래머스에 최근 추가된 연습문제 중 하나인 무인도 여행이라는 문제를 풀어보았는데요, 문제 해결 아이디어를 코드로 구현하는 것이 꽤나 어려웠던 문제이기도 하고, Swift 풀이가 아직 없는 것 같아서 한 번 정리해보려고 합니다! 무인도에 왜 굳이 여행을 가는지는 모르겠지만 암튼 시작해볼게요..ㅎ 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 메리는 여름을 맞아 무인도로 여행을 가기 위해 지도를 보고 있습니다. 지도에는 바다와 무인도들에 대한 정보가 표시돼 있습니다. 지도는 1 x 1크기의 사각형들로 이루어진 ..