algorithm
3 posts
(그리디) 프로그래머스 큰 수 만들기 (level 2)

프로그래머스 그리디 코딩테스트 문제 중 문제이다. 처음에는, 각 자릿 수에 들어갈 수 있는 숫자 중 (의 일부) 가장 큰 값을 순차적으로 배열하도록 시도했다. 이렇게 해보았을 때도 시간초과 없이 으로 작성할 수 있는데, 전체 테스트 케이스 중 10번에서 런타임 오류가 발생한다. 결국 10번에 대한 반례를 찾지 못하여 다른 방법으로 접근해보았다. 해결 방법 stack 자료구조를 사용해서 를 순회하며 stack 에 이미 포함되어 있는 수보다 크거나 같을 경우 stack 에 추가해주었다. 그리고 k 만큼의 수를 제외한 값을 리턴해주었다. 이렇게 풀고나니 코드가 한결 짧고 깔끔하다 .. 삽질 열심히 했네 🥹

August 17, 2022
algorithm
(그리디) 프로그래머스 조이스틱 (level 2)

프로그래머스 그리디 코딩테스트 문제 중 문제이다. 가장 찾기 어려웠던 포인트는 을 구하는 것인데, 기존에는 13 이라는 상수를 쓰지 않고 어떻게든 계산식을 만들어보려고 했으나, A-Z 로 이동하는 것까지 감안해야하는 것과 단순 unicode 를 구할 경우 1의 오차가 생기는 예외들을 처리하지 못했다. 13번째 알파벳인 ‘O’ 부터는 Z에서 출발하는 것이 더 이득이다. 알파벳과 같이 개수가 한정되어 있는 경우 상수를 사용하여 쉽게 풀 수 있다.

August 15, 2022
algorithm
알고리즘 공부

알고리즘 시간 복잡도: 특정한 크기의 입력에 대하여 알고리즘의 수행 시간 분석 공간 복잡도: 특정한 크기의 입력에 대하여 알고리즘의 메모리 사용량 분석 빅오 표기법(Big-O Notation): 복잡도를 나타내기 위한 표기 방법 만 고려한다. ex. 3N^3 + 5N^2 + 1,000,000 일 때, 빅오 표기법에서는 차수가 가장 큰 O(N^3)으로 표현 Dynamic Programming 메모이제이션 (Memoization) 메모이제이션은 탑다운 방식에서 사용됩니다. 한 번 계산된 결과를 메모리 공간에 저장하는 기법입니다. 같은 문제를 다시 호출하면 메모했던 결과를 그대로 가져옵니다. 값을 기록해 놓는다는 점에서 캐싱(Caching) 이라고도 합니다. 탑다운 VS 보텀업 탑다운(메모이제이션) 방식은 하향식이라고도 하며 보톰업 방식은 상향식이라고도 합니다. 다이나믹 프로그래밍의 전형적인 형태는 보텀업 방식입니다. 결과 저장용 리스트는 DP 테이블이라고 부릅니다. 엄밀히 말하면 …

March 30, 2022
algorithm