목록알고리즘/프로그래머스 (62)
어흥
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/43105 코딩테스트 연습 - 정수 삼각형 [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 programmers.co.kr 1. 주의할 점 - DFS가 아닌 점화식을 통해 문제를 해결한다 2. 구현 - DP[][]를 통해 각 지점까지 거쳐간 숫자들의 합의 최대값을 저장한다 - 해당 지점에서 왼쪽 아래와 오른쪽 아래로 갔을 때 각 지점의 최대값을 갱신한다 - 가장 아랫변에 위치한 DP[][]값의 최대값을 반환한다 import java.util.*; import java.io.*; class Solution { static int dp[][]; pu..
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/1837?language=java 코딩테스트 연습 - GPS edge_list [[1, 2], [1, 3], [2, 3], [2, 4], [3, 4], [3, 5], [4, 6], [5, 6], [5, 7], [6, 7]] programmers.co.kr 1. 주의할 점 - BFS/DFS로 시도하면 TLE 혹은 '틀렸습니다'라는 문구가 출력된다 - DP로 접근한다 2. 구현 - 단순하게 그래프 문제라고 생각하고 DFS/BFS로 접근했다가 TLE와 '틀렸습니다'의 연속..(다만 이때, 1개의 채점에 여러개의 TC가 존재하여 1개라도 TLE 또는 메모리초과 발생시 틀렸습니다로 나타난다는 사람들의 의견이 존..
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/42898?language=cpp# 코딩테스트 연습 - 등굣길 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = programmers.co.kr 1. 주의할 점 - 1열과 1행 전부가 도달 가능하지 않을 수 있다 - 연산 이후 값을 저장할 때 MOD를 활용한다 2. 구현 - Arr[M][N] 배열에 (M,N)까지 도착 가능한 방법의 수를 MOD로 나눈 값을 저장한다 - Set을 이용하여 웅덩이의 위치를 저장한다 - [1,1]에 시작하여 1열과 1행에 1을 ..
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/12973 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 1. 주의할 점 - 스택을 활용하여 해결한다 - 짝지어 제거한 이후, 문자열을 새로 저장할 필요가 없다 2. 구현 - 문자열을 전부 비교하며, 스택이 빈 경우에는 문자를 그대로 넣는다 - 만약 스택이 비지 않았다면, 스택의 Top과 현재 문자를 비교하여 같으면 Pop, 다르면 Push를 수행한다 - 모든 문자열에 대해 검사를 한 후, 스..
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/42584?language=cpp 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr 1. 주의할 점 - Stack을 이용하여 해결한다 2. 구현 - Stack에 Prices의 인덱스를 담는 방식으로 진행한다 - Stack의 Top의 원소에 해당하는 Prices보다 현재 Prices(val)가 크거나 같으면 Stack에 추가한다 - 아니라면 Stack의 원소를 뽑아내여 ..
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/42884?language=java 코딩테스트 연습 - 단속카메라 [[-20,-15], [-14,-5], [-18,-13], [-5,-3]] 2 programmers.co.kr 1. 주의할 점 - 정렬 기준을 선택한다 - 정렬기준에 따라 더 나은(? 짧은) 방법을 선택한다 2. 구현 - 차량의 끝지점을 기준으로 오름차순 정렬을 한다. 같다면, 시작점의 오름차순으로 정렬한다 - 우선순위큐를 사용하여 각 차량의 구간을 정렬한다 - 1개 뽑은 이후, 이 구간의 가장 오른쪽 끝부분(Right)과 우선순위큐에서 뽑아내는 원소의 가장 왼쪽부분(Cl)을 비교한다 - Right < Cl라면 새로운 구간이 생겨나므로 ..
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/1845?language=java 코딩테스트 연습 - 폰켓몬 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. programmers.co.kr 1. 주의할 점 - 무엇을 출력해야하는지 잘 살펴본다 (조합의 수로 생각했다가 문제만 여러번 다시 읽었다..) 2. 구현 - Map을 이용해서 를 저장한다 - 폰켓몬의 종류와(Map의 크기) 골라야하는 폰켓몬의 수(Nums/2)를 비교하고, 둘 중 작은것을 반환한다 [C++] #include #include #include..
문제 링크: https://programmers.co.kr/learn/courses/30/lessons/62048 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 programmers.co.kr 1. 주의할 점 - 최대공약수로 접근한다 - 직선이 정사각형의 변에 걸친 경우를 고려한다 - Long Long과 Double을 이용하여 연산이 변수의 최대값을 벗어나지 않도록 한다 2. 구현 - GCD() 함수를 통해 W와 H의 최대공약수를 구한다 - W와 H를 최대공약수로 나눈다 - Cal() 함수를 통해 바뀐 W x H..