알고리즘 1468

[Programmers] 산 모양 타일링

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/258705 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 카카오 테크 홈페이지 해설집을 참고하여 푼 문제였습니다 아래 방향을 향하는 삼각형을 기준을 삼아 점화식을 세우는 DP 문제였습니다. 알고리즘은 아래와 같습니다. 1. 아래 방향을 향하는 삼각형을 채우는 방법은 아래와 같이 네 가지입니다. 위아래 모두 채우는 마름모 (1번) 일반적인 정삼각형 (2번) 자신과 왼쪽 삼각형을 채우는 마름모 (3번) 자신과 오른쪽 삼각형을 채우는 마름..

[Programmers] 표 병합

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/150366 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 유니온 파인드를 이용하는 문제였으며 지문에서 주어진 대로 구현하면 되는 문제였습니다. 알고리즘은 아래와 같습니다. 1. 우선 board 이차원 배열을 모두 "EMPTY"로 초기화하고 coord2coord key-value를 모두 각 좌표로 초기화합니다. 1.1 여기서 coord2coord가 유니온 파인드에 사용되는 map이며 key는 좌표 value는 집합의 루트 좌표입니다. ..

[Programmers] PCCE 기출문제 모음

1. [PCCE 기출문제] 1번 / 출력 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/250133 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. [PCCE 기출문제] 2번 / 피타고라스의 정리 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/250132 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세..

[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번에서 구한 석유의 ..

[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] 두 원 사이의 정수 쌍

문제 링크입니다: 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/178870 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 투 포인터 알고리즘으로 푼 문제였습니다. 알고리즘은 아래와 같습니다. 1. start와 end는 부분 수열의 시작과 끝을 가리키는 인덱스 값을 저장하는 변수이며 [0, 0] 범위부터 시작합니다. 2. 현재 부분 수열의 합이 k보다 작을 경우 범위를 더 넓혀야 하므로 end를 1 증가시킵니다. 2.1. 현재 부분 수열의 합이 k와 같다면 문제 조건에 따라 두 가지 케이스로 구분해..