본문 바로가기

Algorithm/프로그래머스

(48)
[프로그래머스] Lv.2 배달 https://school.programmers.co.kr/learn/courses/30/lessons/12978 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 해결방법 이 문제는 어렵지 않은, 그냥 전형적인 다익스트라 기본 문제이다. 양방향으로 이동이 가능하기 때문에 maps[]에 append할 때, 양방향으로 append해주는 것이 포인트이다. 그리고 1번에서 다른 마을까지의 거리 dist[] 리스트를 이용해서 해당 마을까지의 거리의 값을 구하고, dist에 값을 갱신한다. 거리가 K이하인 개수를 answer에 넣어주면 된다. 2. 정답코드 im..
[프로그래머스] Lv.2 삼각 달팽이 https://school.programmers.co.kr/learn/courses/30/lessons/68645 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 해결방법 이 문제에 대한 아이디어가 40% 정도밖에 떠오르지 않아 결국 포기한 문제이다. 수학적으로 접근해서 아이디어를 생각해내 해결해야 하는 구현 문제이다. n = 4일 경우에는 [1, 2, 3, 4], [5, 6, 7], [8, 9], [10] 순서대로 배열에 값이 들어가는 것을 확인할 수 있다. 각 순서의 배열은 0 ~ 3 번째로 두고, 0번째의 배열에는 4개, 1번째는 3개... 이러..
[프로그래머스] Lv.2 쿼드압축 후 개수 세기 https://school.programmers.co.kr/learn/courses/30/lessons/68936?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 해결방법 생각보다 해결할 수 있는 아이디어가 금방 떠올랐다. 예제1로 생각을 하면 처음에는 큰 사각형을 탐색을 시작하고, 그 다음에는 4등분으로 쪼개져서 탐색을 한다. 이때, (0, 0), (0, 2), (2, 0), (2, 2)가 시작점이 된다. 시작점의 값은 0 또는 1이므로 사각형을 탐색했을 때, 시작점의 값과 다르다면 dfs 백트래킹을 이용해서 다시 한번..
[프로그래머스] Lv.2 소수 찾기 https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 해결 방법 일단 본인은 DFS 방법으로 완전탐색(백트래킹)을 해결하였다. dfs 시작은 "" 빈 문자열을 매개 변수로 재귀를 돌렸고, numbers를 리스트로 만들어서 하나 하나 탐색을 한 후 word + numbers[i]를 매개 변수로 재귀를 돌렸다. 종료 지점은 for문을 이용해서 숫자가 1자리 일때부터 len(numbers) 까지 돌리고 방문 체크도 해주면 모든 경우의 수가 나오게 된..
[프로그래머스] Lv.2 2개 이하로 다른 비트 https://school.programmers.co.kr/learn/courses/30/lessons/77885 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 해결방법 numbers를 for문 돌리서 num이 짝수이면, +1만 해주면 된다. num이 홀수이면, bin[2:]앞에 '0'을 추가하고 rfind() 메서드를 이용하여 0의 인덱스 위치를 구하고 0을 1로 갱신해준다. 그리고 0의 위치에서 +1에 위치한 인덱스 값을 0으로 바꿔준다 2. 정답코드 def solution(numbers): answer = [] for num in numbers..
[프로그래머스] Lv.2 모음사전 https://school.programmers.co.kr/learn/courses/30/lessons/84512 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 해결방법 완전탐색 문제는 항상 dfs로 풀었다. 모음이 5개가 되면 return 해주는 방식으로 재귀를 돌렸다. 물론 aeiou를 순서대로 문자열에 더하면서 재귀를 돌리는 방식이라 리턴이 되더라도 마지막에 더해진 문자열은 영향을 받지 않는 다는 특성을 이용한 것이다. 경험이 너무 적다보니 이렇게 쉬운 문제도 많이 헤맸다. 아직 많이 부족하다... 2. 정답코드 def solution(word..
[프로그래머스] Lv.2 방문 길이 https://school.programmers.co.kr/learn/courses/30/lessons/49994 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 해결방법 상하좌우를 딕셔너리 구조로 초기 값을 설정한다. for문을 돌려서 if문으로 범위를 넘어가지 않는 선에서 로직을 구성하는데 여기서 중요한 부분은 result 리스트에 저장할 때, (y, x, dy, dx) 형태로 저장을 한다. 중복된 거리를 이동하더라도 answer 카운트는 올라가지 않기 때문에 set() 메서드를 통해서 중복된 값들을 제거한다. 틀린 코드에서는 단순히 일방통행을 기..
[프로그래머스] Lv.2 땅따먹기 https://school.programmers.co.kr/learn/courses/30/lessons/12913 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 해결방법 이번 문제의 해결 알고리즘은 DP이다. DP 공부를 거의 안하다 보니 시간이 엄청 오래 걸렸다. 많이 풀다보면 느낌이 올만한 문제였을 것 같다. 열의 길이는 4로 제한되어있으니 작업중인 행과 이전의 행, 열의 인덱스의 값을 비교해서 작업중인 행, 열의 인덱스 값에 추가해주도록 하는 방식으로 구현하면 된다. 다만 연속적으로 같은 열의 인덱스를 선택할 수 없으므로 작업중인 행 이전의 행..