본문 바로가기

알고리즘 스터디

(35)
[Programmers] 연속 부분 수열 합의 개수 - Golang INDEX https://school.programmers.co.kr/learn/courses/30/lessons/131701 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Solution 원형으로 이루어진 수열은 사실 쭉 펼쳐진 선형 배열로 생각하면 됩니다. 예제로 주어진 배열 [7, 9, 1, 1, 4] => [7, 9, 1, 1, 4, 7, 9, 1, 1]로 변환한 뒤 길이가 1인 연속 부분 수열, 길이가 2인 연속 부분 수열... 을 구하면 됩니다. 또한 정답은 중복이 허용되지 않는 배열의 크기이므로 Set 구조가 필요합니다. 하지만 Golang ..
[Programmers] 택배상자 - Javascript INDEX https://school.programmers.co.kr/learn/courses/30/lessons/131704 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Solution 순서대로 들어오는 택배 상자를 보조 컨테이너(스택)를 활용해서 요구하는 순서에 따라 적재하는 문제입니다. 이 문제에서 요구사항은 너무나 명확합니다. 보조 컨테이너는 마지막에 넣은 택배만 꺼낼 수 있다. 즉, 스택 구조라는 의미입니다. 그래서 이 문제의 정답률이 54%로 Lv2에서 비교적으로 높은 정답률을 기록하지 않았나 싶습니다. 우선 필요한 값을 정의합니다. let ..
[Programmers] 연속된 부분 수열의 합 - Javascript INDEX https://school.programmers.co.kr/learn/courses/30/lessons/178870# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Solution 수열을 순회하면서 연속된 수열의 합이 K인 원소의 인덱스를 찾으면 됩니다. 예제로 주어진 sequence를 도식화해 보면 다음과 같습니다. 연속된 수열의 합을 구하기 위해선 처음 INDEX 와 끝 INDEX가 필요합니다. let startIdx = 0; let endIdx = 0; let answer = [0, 1000000]; //끝 INDEX와 처음 INDEX의 ..
[Programmers] 롤케이크 자르기 -Javascript 번외편<왜 이게 안돼?> INDEX https://school.programmers.co.kr/learn/courses/30/lessons/132265 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Solution 철수와 동생이 서로 다른 토핑의 개수가 동일하게 롤케이크를 자를 수 있는 경우의 수를 구하는 문제입니다. 동생이 우선 롤케이크 전부다를 가진다고 가정한 다음 한 조각씩 철수에게 줄 때 철수가 가지고 있지 않던 토핑이면 철수의 토핑개수 +1, 동생이 한 조각을 줌으로써 동생이 가지고 있던 토핑의 개수가 동이 나면 동생의 토핑개수 -1 하면 됩니다. 이를 코드로 풀면 다음..
[Programmers] 과제 진행하기 - Javascript INDEX https://school.programmers.co.kr/learn/courses/30/lessons/176962# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Solution 우선 시간문제에선 저는 시간을 분 단위로 변환하고 시작합니다. 시간 개념으로 해석하려면 60분 다음엔 시간을 올려줘야 해서 번거롭기 때문에 아예 분 단위로 고려하는 것이 편합니다. "15:30" 이 주어진다 면 930이 반환됩니다. function timeToMinute(time) { return Number(time.split(":")[0] * 60) + Numbe..
[Programmers] 이모티콘 할인행사 - Javascript INDEX https://school.programmers.co.kr/learn/courses/30/lessons/150368 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Solution 카카오에서 내는 코딩테스트 문제는 문제가 길어 이해하는데도 오래 걸립니다. 이모티콘 할인율은 10%, 20%, 30%, 40% 중 하나입니다. 만약 이모티콘이 2개라면 나올 수 있는 할인율을 배열로 나타낸다면 [10%, 10%], [10%, 20%], [10%, 30%], [10%, 40%], [20%, 10%], [20%, 20%]... 이렇게 총 16가지가 됩니다...
[Programmers] 마법의 엘리베이터 - Javascript INDEX https://school.programmers.co.kr/learn/courses/30/lessons/148653 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Solution 엘리베이터는 10의 제곱승만큼 이동할 수 있습니다. 최소한의 마법의 돌을 사용하기 위해선 10의 제곱승 단위의 층에 빠르게 도달해야 합니다. 16층을 예시로 든다면 우선 처음에는 10(-6) 층으로 갈지 혹은 20(+4) 층으로 갈지 선택해야 하고 10층에선 1개, 20층에선 2개를 사용하기 때문에 더 적은 돌을 사용하는 16 -> 20(+4) -> 0(-20)가 답이..
[Programmers] 미로탈출 - Javascript INDEX https://school.programmers.co.kr/learn/courses/30/lessons/159993?language=javascript 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Solution 그래프 문제는 DFS 혹은 BFS로 대부분 풀 수 있습니다. 이 문제는 BFS로 풀었습니다. 위 문제를 정말 쉽게 해석하면 벽('X') 인 곳을 피해 레버('L')가 있는 곳에 도착하고 다시 도착지('E')까지 도착하는 가장 짧은 경로를 구하는 문제입니다. 즉, 출발지부터 레버가 있는 곳 까지의 경로를 구하고 레버에서부터 도착지까지의..