오늘은 스택/큐 연습이었다.
https://school.programmers.co.kr/learn/courses/30/lessons/42586
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내가 해당 문제를 푼 방법은 다음과 같다.
1. progresses 배열에서 100이 되기 위한 기간을 각자 구하여 array 에 초기화 한다.
2. 초기화된 array 의 배열의 첫번째 값을 다음 값과 비교한다.
3. 다음 값보다 클 경우 ( arr[0] = 7 > arr[1] = 3 ), 현재 인덱스에 그대로 값을 1개 더 해준다.
4. 다음 값보다 작을 경우 ( arr[0] 7 < arr[2] = 9 ), 인덱스를 증가시키고 값을 1개 더해준다.
int[] progress = {93, 30, 55};
int[] speeds = {1, 30, 5};
해당 배열이 있다고 한다면, 다음과 같은 점화식으로 해를 구한다
1)
100 - 93 = 7 / 1 = 7
100 - 30 = (ceil) 70 / 30 = 3
초기화된 배열은 다음과 같다
int[] arr = {7,3,9}
그리고 now 변수를 선언하고 arr 배열의 값의 앞, 뒤를 비교해주면 될 것이다.
int now = 7; arr[0] = 7; answer[0] = 1;
int now = 7; arr[1] = 3; answer[0] = 2;
int now = 9; arr[1] = 9; answer[1] = 1;
구현한 코드는 다음과 같다.
'TIL' 카테고리의 다른 글
[코테연습] smallest-number-in-infinite-set (0) | 2024.05.25 |
---|---|
[코테연습] 더맵게 (0) | 2024.05.24 |
[코테연습] 올바른 괄호 (0) | 2024.05.23 |
[코테연습] 의상 (0) | 2024.05.21 |
[코테연습] 전화번호목록 (0) | 2024.05.20 |