분류 전체보기(196)
-
Level 2️⃣ - n^2 배열 자르기
https://school.programmers.co.kr/learn/courses/30/lessons/87390 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🚀문제 해석 n이 최대 10^7 이기 때문에 이차원배열을 만들어 요소를 집어넣고 다시 1차원배열로 만들어서 left에서 right까지 자른다고 생각하면 시간복잡도 초과가 날 것이다. 왜냐하면 최악의 경우 이차원 배열을 만드는 데 10^14번까지 연산이 이루어지기 때문이다. 이런 문제는 규칙 혹은 패턴을 찾아야한다. 이차원 배열이니까 좌표로 접근해보자. 그림과 같이 arr[ i ][ j ] 좌표에 ..
2024.04.03 -
Level 2️⃣ - 괄호 회전하기
https://school.programmers.co.kr/learn/courses/30/lessons/76502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제를 해석하는 것은 비교적 쉬웠다. 문자열을 왼쪽으로 회전시키고 스택을 활용해 올바른 괄호인지 체크하면 된다. 이 문제의 핵심은 문자열을 한 번 회전시키는 것이 아니라 0부터 문자열 길이 - 1번만큼 회전시켜야 된다는 점이다. 즉, 문자열이 10글자라면 0부터 9까지 왼쪽으로 회전시킬 때마다 올바른 괄호인지 체크해야한다. const check = (a) => { const match = new ..
2024.04.02 -
Level2️⃣ - 멀리 뛰기
https://school.programmers.co.kr/learn/courses/30/lessons/12914 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해석 n의 값에 따라 결과값이 어떻게 나오는지 정리하면 다음과 같다. n = 1 ➡ 1 n = 2 ➡ 2 n = 3 ➡ 3 n = 4 ➡ 5 즉, 피보나치 수열이다. 그렇다면 피보나치 수열을 구현하면 되는데 구현 방법에는 재귀와 dp가 있다. 재귀로 호출할 경우에는 수가 커짐에 따라 스택 프레임 용량을 초과할 수 있기 때문에 dp로 구현해야한다. 그리고 n이 최대 2000이라면 숫자로 표현할 수 ..
2024.04.01 -
Level2️⃣ - 점프와 순간이동
https://school.programmers.co.kr/learn/courses/30/lessons/12980 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 다양한 예제를 시도해보면서 규칙을 찾아보았다. 그리고 재귀를 통해 구현할 수 있을 거 같다는 느낌이 들었다. 우선 N을 재귀로 계속 나누어본다. D(8) ➡ D(4) ➡ D(2) ➡ D(1) 재귀함수의 인자값이 1이 되면 1을 리턴한다. 기저 조건에 해당한다. 처음에는 무조건 배터리를 한 개 소모하기 때문이다. 그리고 배터리 갯수를 누적하면 된다. D(1)에서 1이 리턴되고 D(2)는 2까지 가는..
2024.03.28 -
Level2️⃣ - 영어 끝말잇기
https://school.programmers.co.kr/learn/courses/30/lessons/12981 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해석 우선 실패 조건을 확인하자. 예외처리에 대해 꼼꼼하게 생각해야한다. 이전에 등장한 단어를 말하거나 한글자만 말하거나 앞사람의 마지막 글자로 시작하는 단어를 말하지 않았을 때 실패한다. 그렇기 때문에 등장한 단어들을 체크하는 해시맵을 만들어서 해시맵에 있는 단어를 또 말하는 경우 실패로 처리한다. 그리고 스택을 이용해서 단어들을 하나씩 담으면서 들어오는 단어가 스택에 맨 위에 있는 단어의 마지..
2024.03.28 -
DFS - 수열 추측하기
문제 가장 윗줄에 1부터 N까지의 숫자가 한 개씩 적혀 있다. 그리고 둘째 줄부터 차례대로 파스칼 의 삼각형처럼 위의 두개를 더한 값이 저장되게 된다. 예를 들어 N이 4 이고 가장 윗 줄에 3 1 2 4 가 있다고 했을 때, 다음과 같은 삼각형이 그려진다. 3 1 2 4 4 3 6 7 9 16 N과 가장 밑에 있는 숫자가 주어져 있을 때 가장 윗줄에 있는 숫자를 구하는 프로그램을 작성하 시오. 단, 답이 여러가지가 나오는 경우에는 사전순으로 가장 앞에 오는 것을 출력하여야 한다. ▣ 입력설명 첫째 줄에 두개의 정수 N(1≤N≤10)과 F가 주어진다. N은 가장 윗줄에 있는 숫자의 개수를 의 미하며 F는 가장 밑에 줄에 있는 수로 1,000,000 이하이다. ▣ 출력설명 첫째 줄에 삼각형에서 가장 위에 ..
2024.03.28