https://school.programmers.co.kr/learn/courses/30/lessons/12905# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 해결방법 1. 보드의 행 또는 열의 길이가 2 미만인 경우(즉, 1x1, 1xN, Nx1의 경우) 1이 하나라도 있으면 1을 반환, 만약 1이 전혀 없으면 0을 반환 2. 현재 위치(i, j)에서 1을 발견하면, 이전 행(i-1), 이전 열(j-1), 이전 행의 이전 열(i-1, j-1)의 값 중 가장 작은 값을 현재 위치(i, j)에 저장 3. 각 위치에서 가능한 정사각형의 최대값을 찾아 ..
https://school.programmers.co.kr/learn/courses/30/lessons/12899 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 해결방법 1. n이 3의 배수가 아니면 십의자리 = 몫, 일의자리 = 나머지, n이 3의 배수면 십의자리 = 몫-1. 나머지 = 4로 놓는다. 2. 만약 몫이 3이상이면 재귀하여 몫을 다시 124 나라의 숫자로 바꾼다. 🔑 풀이 이 문제를 풀기 위해 먼저 124 나라의 규칙을 생각해봤다. 그냥 3진법이라기엔 3의 배수들은 값이 맞지 않았다. 1나누기3 = 몫0, 나머지1 = 1 2나누기3 = ..
https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 🤔 해결방법 1. 수열의 숫자를 만들기 위해 만들려는 숫자가 스택의 top에 올 때까지 필요한 숫자를 스택에 push 2. 만들려는 숫자가 top에 있으면 pop 3. 만들 수 없는 경우는 'NO'를 반환 🔑 풀이 처음 문제를 읽었을 땐 한 번에 이해가 잘 가지 않았다. 다음과 같이 예제 1번의 실행 순서를 적어보며..
https://school.programmers.co.kr/learn/courses/30/lessons/12938 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 해결방법 1. s를 n으로 나눈 몫으로 집합을 채운다. 2. 나머지가 나오는 경우 1씩 더해준다. 3. 오름차순으로 정렬 후 반환 🔑 풀이 문제를 처음 읽었을 때는 단순하게 합해서 S가 되는 쌍을 모두 찾아 곱하기까지 해보면 되지 않을까 싶었지만 당연히 메모리 초과, 시간 초과가 날 것 같았다. 그래서 곱의 결과가 최대가 되는 집합을 찾기 위해 어떤 규칙이 있는지 여러 예시로 알아봤다. 그 결..
https://school.programmers.co.kr/learn/courses/30/lessons/42884 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 해결방법 1. routes를 자동차가 진입한 지점을 기준으로 오름차순 정렬 2. 첫 번째 자동차의 경로를 기준으로 카메라 개수를 1로 설정 3. if 모든 자동차 경로를 순회하면서 현재 처리 중인 자동차의 나간 시간보다 다음 자동차의 진입 시간이 크다면, camera+1 하고 현재 자동차의 enter, o을 다음 자동차의 값으로 업데이트 4. else if 다음 자동차가 현재 처리 중인 자동차..
https://school.programmers.co.kr/learn/courses/30/lessons/181188 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 해결방법 1. targets를 오름차순으로 배열하고 launch와 [s, e]의 초기값을 설정한다. 2. if 현재 처리 중인 마시일이 파괴되는 시간보다 다음 미사일의 출발시간이 크거나 같다면, launch +1을 하고 현재 미사일의 s,e를 다음 미사일의 값으로 업데이트 한다. 3. else if 다음 미사일의 개구간이 현재 처리 중인 미사일의 개구간 범위에 있다면 현재 미사일의 s,e를 ..
https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net 🤔 해결방법 1. 필요한 변수들 할당하고 그래프 생성 2. 촌수를 계산할 a의 인접노드를 차례로 순회하며 해당 촌수가 0이면 a의 촌수 +1로 업데이트 후 재귀 3. 촌수를 계산받을 사람의 촌수를 출력, 이 때 0이라면 -1을 출력 🔑 풀이 일반적으로 노드를 이동할 때 조건이 붙으면 DFS, 최단거리를 구하거나 인접노드를 공통적으로 처리해야할 때는 BFS를 사용한다는 것을 알게..
https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 🤔 해결방법 1. N, M, V를 입력받고 그래프 생성 2. 시작 정점 V를 기준으로 DFS와 BFS 수행 3. 방문한 정점들을 result에 저장하고 출력 🔑 풀이 DFS와 BFS은 개념은 알지만 막상 문제에 적용하려면 어렵게 느껴져 제대로 푼 적이 많이 없었다.😥 그래서 이 문제를 풀어보며 DFS와 BFS에 대해 더 자세히 공부해봤다. DFS든 BFS든 일..