알고리즘/programmers 279

[Programmers] 등대

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/133500 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 노드 수는 N개이고 간선 수는 N - 1개이므로 트리를 연상할 수 있는 문제였습니다. 알고리즘은 아래와 같습니다. 1. 우선, 리프 노드에 속하는 등대를 점등하는 것보다 해당 등대에 연결된 등대를 점등하는 것이 낫다고 그리디 하게 접근했습니다. 1.1 정리하자면 리프 노드에 속하는 등대는 점등되는 일이 없습니다. 2. 이에 따라 리프 노드를 제외한 노드들 즉, 두 개 이상 등대..

[PCCP 기출문제] 4번 / 수레 움직이기

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/250134 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 재귀함수와 BFS 알고리즘을 통해 풀 수 있는 문제였습니다. 알고리즘은 아래와 같습니다. 1. maze 벡터를 순회하며 빨간색 수레와 파란색 수레가 위치한 좌표를 구하고 해당 좌표를 각각 빨간색과 파란색 수레가 위치했었다고 visited 배열에 표시를 합니다. 2. 각 수레는 상하좌우로 움직일 수도 있고 가만히 서있을 수도 있습니다. 2.1 각 턴마다 두 수레 모두 움직이지 않..

[PCCP 기출문제] 2번 / 석유 시추

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/250136 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 간단하게 풀 수 있는 BFS 문제였습니다. 시추관을 수직으로 꽂기 때문에 각 x 좌표마다 석유를 얼마나 뽑을 수 있는지 구하면 되는 문제였습니다. 알고리즘은 아래와 같습니다. 1. land 이차원 벡터를 순회하며 BFS 알고리즘을 통해 뽑을 수 있는 석유의 양을 구합니다. 1.1 핵심은 각 x 좌표마다 석유를 얼마나 뽑을 수 있는지를 구하는 것이기 때문에 1번에서 구한 석유의 ..

[PCCP 기출문제] 1번 / 붕대 감기

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/250137 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제에서 주어진 대로 풀면 되는 간단한 구현 문제였습니다. 개발환경: Programmers IDE 지적, 조언, 질문 환영합니다! 질문 남겨주세요~

[Programmers] 카운트 다운

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/131129# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr target이 최대 10만 점이고 다트는 한 턴당 최대 60점을 얻을 수 있기 때문에 단순 구현으로 접근하면 TLE가 발생합니다. 따라서 DP로 풀어야하는 문제였습니다. 알고리즘은 아래와 같습니다. 1. cache 벡터를 0 인덱스이므로 크기는 target + 1만큼 그리고 모든 인덱스를 {0, 0}으로 초기화해줍니다. 2. 모든 경우의 수를 확인하기 위해 모든 케이스에 대해..

[Programmers] 부대복귀

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/132266 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr BFS로 간단하게 풀 수 있는 문제였습니다. 알고리즘은 아래와 같습니다. 1. 주어진 roads 벡터를 토대로 양방향 그래프를 만들어 줍니다. 2. sources 벡터를 순회하면서 destination으로부터 source로 갔을 때 최소 경로를 BFS 알고리즘을 통해 구해줍니다. 2.1 이때 도달할 수 없을 경우 answer에 -1을 추가하고 도달할 수 있을 경우 answer에..

[Programmers] 2차원 동전 뒤집기

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/131703 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 비트마스킹으로 풀 수 있는 문제였습니다. 알고리즘은 아래와 같습니다. 1. 첨부하는 그림에서 볼 수 있다시피 beginning을 target으로 바꾸기 위해 뒤집을 열과 행을 정하는 것이 중요하지 뒤집는 순서는 중요하지 않습니다. 2. 열과 행의 길이가 각각 최대 10이기 때문에 모든 경우의 수를 구해도 O(2^20 * 20)입니다. 따라서 모든 경우의 수를 테스트한 뒤 답을 ..

[Programmers] COS Pro 1급 C 모의고사

1. 스택으로 큐 구현: https://school.programmers.co.kr/learn/courses/11115/lessons/70752 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 지그재그 부분 수열: https://school.programmers.co.kr/learn/courses/11115/lessons/70753 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 3. Up and dow..

[Programmers] 두 원 사이의 정수 쌍

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/181187 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 수학적인 사고능력이 필요한 문제였습니다. 알고리즘은 아래와 같습니다. 1. 원은 상하좌우 대칭이므로 (1 사분면 내 조건에 맞는 좌표들의 개수) * 4를 하면 정답이 나옵니다. 2. 따라서 [1, r2] 구간의 좌표들을 구하는데 이때 r1, r2, 그리고 x의 값이 연산 중 int 범위를 초과하며 오버플로우가 발생할 수 있으므로 x * 1LL * x와 같이 처리하여 int 범위..

[Programmers] 과제 진행하기

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/176962 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 스택을 이용한 시뮬레이션 구현 문제였습니다. 알고리즘은 아래와 같습니다. 1. 시작 시간을 쉽게 비교하기 위해 시작 시간을 분 단위로 전처리하고 map 자료구조를 통해 해당 시작 시간에 매칭되는 과제를 매핑합니다. 1.1 이때 가장 빠른 시작 시간도 구해줍니다. 2. 가장 먼저 진행해야 할 과제부터 순차적으로 진행하는데 문제에서 주어진 조건대로 해당 과제를 마무리하기 전 새로운..