프로그래머스 알고리즘
-
도둑질프로그래머스 알고리즘 2024. 4. 18. 20:05
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr n개의 집이 있으면 각각 돈이 있다. 서로 이웃하지 않는 선에서 돈을 훔칠 때 가장 최댓값을 구하라. 단순히 생각하면 dp[i] = Math.max(dp[i-1], dp[i-2] + money[i]) 라고 점화식을 세울 수 있다. 하지만 집이 원형으로 이뤄져 있다는 점에서 다르게 생각해 주어야 한다. 즉, 첫번째 집을 선택하면 맨 마지막 집을 선택할 수 없습니다. 반대로 첫번째 집을 선택하지 않고 두번째 집을 선택하면 마지막 집까지 선택할 수 있습니다. 이를 dp 식으로 표현하면 아래와 같다. class..
-
디스크 컨트롤러프로그래머스 알고리즘 2024. 3. 21. 20:39
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 작업 순서를 설정해 작업 시간을 최소로 하는 문제이다. 예를 들어 - 0ms 시점에 3ms가 소요되는 A작업 요청 - 1ms 시점에 9ms가 소요되는 B작업 요청 - 2ms 시점에 6ms가 소요되는 C작업 요청 그림으로 표현하면 아래와 같다. 이것을 차례대로 처리하면 아래 그림과 같다. 이 때 각 작업의 요청부터 종료까지 걸린 시간의 평균은 10ms(= (3 + 11 + 16) / 3)가 된다. 하지만 A → C → B 순서대로 처리하면 이렇게 A → C → B의 순서로 처리하면 각 작업의 요청부터 종료..
-
조이스틱프로그래머스 알고리즘 2024. 1. 9. 15:01
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 조이스틱을 최소로 움직여서 알파벳을 만드는 문제이다. 처음 알파벳은 글자 수 * "A" 로 설정한다. (ex : "JAZ" 이면 처음 알파벳은 "AAA") 먼저 내가 문제를 풀면서 처음에 생각한 방법이다. 1. 먼저 check 배열을 통해 바꿀 알파벳을 찾는다. (A는 바꿀 필요없음) 2. 현재 위치(index = 0)에서 가장 가까운 곳을 찾고 이동한다. (왼쪽, 오른쪽) 3. 이동한 위치에서 상하로 알파벳을 최소로 이동하면서 바꿈(위, 아래) 2 ~ 3 반복 이에 따라 아래 코드는 내가 작성한 코드이..
-
등산 코스 정하기프로그래머스 알고리즘 2023. 11. 25. 13:14
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 위와 같은 등산코스가 주어진다. 파란색은 출입구이고, 빨간색은 정상이다. 출입구에서 시작해서 정상까지 가는 동안 최소 비용으로 가는 경로를 구하는 문제이다. 출입구는 항상 같은 번호여야 한다. 즉, 등산 코스 중 다른 출입구는 방문 할 수 없다. 정상은 한번만 방문 해야 한다. 예를 들어 위와 같은 경로로 등산하면 비용은 5이다.(경로 중 가장 높은 금액) 위와 같은 경로로 등산하면 비용은 3이다. (경로 중 가장 높은 금액) 따라서 최소 비용는 3이다. 이 때 최소경로가 되는 등산코스에 포함된 정상 번..
-
코딩 테스트 공부프로그래머스 알고리즘 2023. 11. 25. 01:44
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 현재 자신의 알고력과 코딩력으로 주어진 문제를 풀 수 있는 최소 시간을 구하는 문제이다. 모든 문제는 최소 알고력과 코딩력이 주어지고 자신의 현재 알고력과 코딩력이 모두 문제의 알고력과 코딩력을 넘어야 문제를 풀 수 있다. 문제를 풀면 알고력과 코딩력이 문제에 따라 증가된다. 물론 드는 시간도 제각각이다. 한 문제를 여러번 풀 수 있다. 또 다르게 알고력과 코딩력을 늘릴 수 있는 방법은 1의 시간을 들이며 알고력, 코딩력 둘중 하나를 늘릴 수 있다. 초기 알고력(alp), 코딩력(cop)가 주어집니다. ..
-
표 편집프로그래머스 알고리즘 2023. 11. 24. 00:36
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 행 번호가 적혀있는 표가 주어지면 여러 명령어를 통해 표를 삽입하거나 삭제할 수 있다. 명령어 모음인 cmd가 주어지면 처음에 주어진 표와 cmd 명령이 모두 실행된 후의 표와 비교해 원래에 표와 동일한 행이면 O, 다르면 X를 표시해 문자열을 return 하는 문제이다. 먼저 주어진 n은 원래 주어진 표의 길이이다. 예를들어 n = 8이라고 하면 행번호는 (0 ~ 7) 이된다. k는 현재 선택된 행 번호를 의미한다. cmd는 다음과 같이 4가지 종류로 나눠진다. "U X": 현재 선택된 행에서 X칸 위..
-
수식 최대화프로그래머스 알고리즘 2023. 11. 22. 23:10
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 수식이 주어지면, 연산자의 우선순위를 임의를 바꿔 최댓값을 구하는 문제이다. 예를 들어 "100-200*300-500+20" 식이 주어지면, * > + > - 순서로 연산자의 우선순위를 정해주면 100-200*300-500+20 = 100-(200*300)-500+20 = 100-60000-(500+20) = (100-60000)-520 = (-59900-520) = -60420 음수의 결과값은 절댓값을 취해준다. 연산자는 총 "*", "+", "-" 3가지가 나온다. 먼저 연산자 순위의 모든 경우의 수..
-
징검다리 건너기프로그래머스 알고리즘 2023. 11. 21. 20:12
문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 징검다리를 건널 수 있는 사람 숫자를 세는 문제이다. 예를 들어 징검다리인 stones = {2, 4, 5, 3, 2, 1, 4, 2, 5, 1} 이라고 한다면, 사람이 지나갈 때 마다 징검다리의 숫자는 -1씩 된다. 만약 징검 다리의 숫자가 0이 되면 점프해서 다음 징검다리로 건너가야 한다. 최대 k개의 징검다리를 건너갈 수 있다면 몇명의 사람이 이용가능할 까? 예를 들어 k = 3이면 아래 예시와 같다. 처음에 접근할 때는 stones를 처음부터 k의 구간을 계속 보면서 확인하였다. 내 첫 코드 cl..