본문 바로가기

전체 글

[프로그래머스][level3] 등산 코스 정하기 - Python 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/118669 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 - 다익스트라 알고리즘 응용 여기서는 도착 위치까지 가장 짧은 거리를 구하는 것이 아니라, intensity가 가장 짧은 것을 구해야 하므로 기존 다익스트라 알고리즘의 distance 배열에 intensity의 최솟값으로 갱신해주면 된다. import heapq def dijkstra(n, graph, gates, summits ): heap = [] # intensity가 같다.. 더보기
[프로그래머스][level3] 코딩 테스트 공부 - python 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/118668 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 다른 블로그 참고해서 풀었다. - dp 문제 dp[i][j] : 코딩력 i, 알고력 j 를 얻을 수 있는 최단 시간 가능한 경우의 수에 대하여 dp 배열에 최솟값으로 갱신해주면 된다. 주의해야 할 점은, 목표 코딩력, 알고력 (문제들의 최대 코딩력과 알고력) 을 넘어가지 않도록 체크해줘야 한다. def solution(alp, cop, problems): answer = 0 IN.. 더보기
[프로그래머스][level2] 이모티콘 할인 행사 - python 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/150368 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 - 완전 탐색 문제 users와 emoticons의 최대 길이가 그렇게 크지 않으므로, 완전 탐색으로 접근 중복순열 라이브러리를 사용해서 간단하게 풀었다. 이모티콘의 할인율이 10, 20, 30, 40 중 하나이므로 중복 순열로 가능한 이모티콘들의 할인율의 조합들을 구한 후, 각 케이스 별 이모티콘 플러스 가입자 수와 판매액을 구해주었다. from itertools import .. 더보기
[프로그래머스][level2] 택배 배달과 수거하기 - python 문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/150369 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 - 그리디 문제 이동 거리를 줄이기 위해서는 가장 멀리 있는 것부터 해결해야한다. 따라서 배달해야하는 택배 수와 수거해야하는 택배수를 더하고, 해당 위치를 방문하지 않아도 될 때까지 cap의 수만큼 빼준다. -> 왕복 이동하는 것을 의미하므로, 왕복 이동 거리를 더해준다. 음수 값이어도 다음에 배달 & 수거할 택배들에 의해서 채워진다. def solution(cap, n, del.. 더보기
[코드 트리] 꼬리잡기놀이 - python 문제 링크 https://www.codetree.ai/frequent-problems/tail-catch-play/description 코드트리 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 풀이 해설을 참고하여 풀었다. 이런 문제가 나왔을 때, 고려해야 할 점들이 많기 때문에 아이디어를 쉽게 생각하지 못하는 것 같다. rail이라는 배열에는 index(팀 번호) 별 rail의 위치를 저장하였다. 이때, rail[0]은 머리의 위치이고 머리를 시작으로 2번의 위치 -> 3번의 위치 -> 4번의 위치를 대입해주었다. 나중에 한칸씩 이동할 때 편리하게 하기 위해서 deque를 사용했다. 팀 번호는 gr.. 더보기
[백준 15685번] 드래곤 커브 - python 문제 링크 https://www.acmicpc.net/problem/15685 15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커 www.acmicpc.net 풀이 규칙을 찾아야하는 문제이다. 나는 규칙을 찾지 못해서 블로그를 참고했다. 다양한 방식으로 접근하려는 노력을 해야겠다. 규칙은 다음과 같다. 예를 들어, 시작 방향이 0이라고 하자 0세대 : 0 1세대 : 0 1 2세대 : 0 1 2 1 3세대 : 0 1 2 1 2 3 2 1 4세대 : 0 1 2 1 2 3 2 1 2 3 0 3 2 3 2 1 ... 즉, .. 더보기
[백준 12100번] 2048 (Easy) - python 문제 링크 https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 풀이 백트래킹 + 구현 문제 하나씩 내려가는 문제는 몇 번 풀어보았는데, 본 문제에서 중요한 것은 이미 합쳐진 블록은 또 다른 블록과 합쳐질 수 없다는 것이다. 따라서 이미 합쳐진 블록부터는 해당 방향으로 이동하지 않도록 해야한다. 기준 블록을 이동할 방향의 끝으로 잡고, 만약 합쳐졌거나 다른 블록이 있어 더이상 이동할 수 없다면 기준 블록을 하나씩 올려주는.. 더보기
[코드트리] 술래 잡기 - python 문제 링크 https://www.codetree.ai/frequent-problems/hide-and-seek/description 코드트리 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 풀이 고려해야하는 조건들이 매우 많아 까다로웠던 문제이다. 소용돌이로 이동하는 문제는 풀어보았는데, 이동 방향이 틀어지는 지점이라면 방향을 바로 튼다는 점을 어떻게 구현해야할지 몰라, 이동 위치에 다음 이동할 위치의 방향을 기록한다는 아이디어만 참고하여 구현하였다. 구현 방식은 다음과 같다. next_dir 배열에는 술래가 중앙에서 시작하였을 때, 위치 별 다음 이동할 방향을 기록한다. next_dir_revers.. 더보기