https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 🤔 해결방법 1. dp 배열 초기화하기 (각 요소 = i번째 계단에 오를 때까지 얻을 수 있는 최대값) 2. dp[1] = arr[1], dp[2] = arr[1] + arr[2] 로 설정하기 3. 3번째 칸부터는 dp[i - 3] + arr[i - 1] + arr[i]와 dp[i - 2] + arr[i] 이렇게 두 경우 중 최대값 넣어주기 🔑 풀이 const input = require("fs") // .r..
https://www.acmicpc.net/problem/2748 2748번: 피보나치 수 2 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 🤔 해결방법 1. dp 배열 초기화 2. 0번째, 1번째 수 0, 1로 지정 3. i번째 = i-2번째 + i-1번째라는 규칙으로 for문 작성 이 때, BigInt 사용 4. 마지막 출력에서 toString사용 🔑 풀이 const input = require("fs") // .readFileSync("/dev/stdin") .readFileSync(__dirn..

https://www.acmicpc.net/problem/12847 12847번: 꿀 아르바이트 월세를 내기 바로 전 날 까지 인 n (1 ≤ n ≤ 100,000) 일과 일을 할 수 있는 날 m (0 ≤ m ≤ n) 일이 주어진다. 그 다음 줄 에는 1일부터 n일 까지 일급 Ti가 순서대로 주어진다. (0 < Ti ≤ 1,000,000) www.acmicpc.net 🤔 해결방법 1. 초기값 = 처음부터 m개의 합 2. 슬라이딩 윈도우로 앞에 하나 빼고 뒤에 하나 더하기 3. 그 값을 profit에 push 4. 2,3번 반복 5. profit에서 가장 큰 값 출력 🔑 풀이 const input = require("fs") // .readFileSync("/dev/stdin") .readFileSync(..
https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 해결방법 1. 입출차 기록을 자동차 번호 기준으로 오름차순 정렬하고 자동차 번호만 추출한다. 2. for문을 돌며 자동차 번호 별 입차, 출차 시간을 계산하는데, 출차까지 한 경우와 입차만 한 경우로 나눠 계산한다. 3. 기본 시간을 기준으로 주차 요금을 계산하고 answer에 차례로 push 한다. 🔑 풀이 먼저 입출차 기록을 관리하기 쉽게 이중 배열로 저장했다. 그리고 차량 번호가 작은 자..
https://www.acmicpc.net/problem/3226 3226번: 전화 요금 첫째 줄에 상근이가 건 전화의 수 N이 주어진다. (1 ≤ N ≤ 100) 다음 N개 줄에는 상근이가 건 전화에 대한 정보가 HH:MM DD와 같은 형식으로 주어진다. HH:MM은 전화를 건 시간이며, DD는 통화 시간이 www.acmicpc.net 🤔 해결방법 1. 전화를 건 시간과 통화 시간 값을 이중 배열로 저장 2. 7:00부터 19:00까지에 해당되면 fee += 통화 시간 x 10원, 19:00부터 7:00까지에 해당되면 fee += 통화 시간 x 5원 3. 이때 18시에서 19시로 넘어가는 경우와 6시에서 7로 넘어가는 경우를 나눠서 계산 🔑 풀이 먼저 입력되는 전화를 건 시간과 통화 시간 값들을 이중 ..
https://school.programmers.co.kr/learn/courses/30/lessons/86971 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 해결방법 1. wires 배열을 사용해그래프 생성 2. wires 배열의 각 간선을 순서대로 제거하면서 그래프를 두 부분으로 분리 3. 간선을 하나 제거한 후 DFS를 돌며 시작 노드로부터 연결된 모든 노드들의 수 count를 계산 4. 두 그룹의 노드 수의 차이를 계산하여 차이의 절대값을 answer에 push 후 최솟값 반환 🔑 풀이 가장 먼저 양방향 그래프를 생성한다. // 그래프 생성 ..

https://school.programmers.co.kr/learn/courses/30/lessons/42583 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 해결방법 1. 길이가 bridge_length이고 0으로 채워진 다리 bridge 생성 후 shift 2. 현재 bridge에 있는 모든 숫자와 truck_weights의 첫번째 숫자의 합이 weight보다 작거나 같으면 트럭 추가와 time++, 아니면 0 추가와 time++ 3. 대기 트럭이 없을 때까지 2번의 과정을 반복 🔑 풀이 대기 트럭을 앞에서부터 순서대로 꺼내야하므로 큐를 사용해 ..
https://school.programmers.co.kr/learn/courses/30/lessons/42584 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 해결방법 1. 첫 번째 for문에서 주식 가격 배열 prices를 처음부터 끝까지 순회하며 주식이 떨어지지 않은 시간 time을 0으로 초기화 2. 두 번째 for문에서 현재 주식 가격보다 뒤에 있는 주식 가격들을 순회하며 time 변수를 1씩 증가 3. 만약 현재 주식 가격이 다음 주식 가격보다 높다면 break로 빠져나오고 time을 answer에 push 4. 위의 과정을 반복하며 ans..