728x90
코딩 테스트 풀이 체크리스트 |
|
2시간 내에 풀었는가? | O |
본인의 실력으로 풀었는가? | O |
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
import java.util.*;
class Solution {
public int solution(int bridge_length, int weight, int[] truck_weights) {
int w = 0; //다리 위에 있는 트럭의 무게
int time = 0; //걸린 시간
int position = 0; //지나야할 트럭의 순서를 기록
ArrayList<Integer> bridge = new ArrayList<>(); //다리 위의 모습을 표현할 용도
int finished = 0; //지난 트럭의 갯수
//다리를 지난 트럭의 수가 총 트럭 수보다 작을 동안만 반복
while (finished < truck_weights.length) {
time++; //시간+1
다리 위에 있는 트럭이 length와 같다면 한 개씩은 앞에서부터 지워줘야 함
if (bridge.size() == bridge_length) {
int num = bridge.remove(0); //제일 앞에 있는 트럭 제거
if (num != -1) { //만약 num이 -1이 아니면 무게가 있는 트럭이라는 뜻이기 때문에
w -= num; //다리 위에 있는 트럭의 무게에서 현재 다 지나온 트럭의 무게 빼주고
finished++; //통과한 트럭의 개수는 추가
}
}
//아직 다리위에 올라가지 않은 트럭이 있고,
//그 무게가 현재 다리 위에 있는 트럭의 무게와 더해도 감당할 수 있는 무게라면 다리 위로 올림
if (truck_weights.length > position && w + truck_weights[position] <= weight) {
w += truck_weights[position];
bridge.add(truck_weights[position]);
position++;
} else { //그렇지 않으면 그냥 빈 칸 추가
bridge.add(-1);
}
}
return time; //마지막에 걸린 시간 리턴하기
}
}
테스트 1 〉 | 통과 (1.00ms, 78.4MB) |
테스트 2 〉 | 통과 (23.91ms, 81.1MB) |
테스트 3 〉 | 통과 (0.05ms, 74.3MB) |
테스트 4 〉 | 통과 (9.74ms, 84.5MB) |
테스트 5 〉 | 통과 (113.49ms, 87.9MB) |
테스트 6 〉 | 통과 (27.48ms, 88.1MB) |
테스트 7 〉 | 통과 (0.81ms, 76.9MB) |
테스트 8 〉 | 통과 (0.32ms, 76.3MB) |
테스트 9 〉 | 통과 (2.22ms, 78.6MB) |
테스트 10 〉 | 통과 (0.34ms, 72.3MB) |
테스트 11 〉 | 통과 (0.04ms, 82MB) |
테스트 12 〉 | 통과 (0.48ms, 77.4MB) |
테스트 13 〉 | 통과 (0.89ms, 75.3MB) |
테스트 14 〉 | 통과 (0.06ms, 77.9MB) |
728x90
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[Java] 프로그래머스 - 이중우선순위큐 (3단계) (0) | 2022.07.20 |
---|---|
[JavaScript] 프로그래머스 - 다리를 지나는 트럭 (2단계) (0) | 2022.07.19 |
[JavaScript] 프로그래머스 - 위장 (2단계) (0) | 2022.07.15 |
[Java] 프로그래머스 - 위장 (2단계) (0) | 2022.07.15 |
[JavaScript] 프로그래머스 - 2 x n 타일링 (2단계) (0) | 2022.07.14 |