티스토리 뷰
반응형
https://softeer.ai/practice/info.do?idx=1&eid=403
Softeer
연습문제를 담을 Set을 선택해주세요. 취소 확인
softeer.ai
[문제]
동일한 자동차를 생산하는 2개의 조립 라인 A와 B가 있다. 두 조립라인에는 각각 N개의 작업장이 있다. 각각의 작업장을 Ai (1 ≤ i ≤ N)와 Bi (1 ≤ i ≤ N)로 표시하자. Ai 작업장과 Bi 작업장은 동일한 작업을 수행하지만 작업시간은 다를 수 있다. A 조립 라인의 경우 A1 작업장에서 최초 조립이 시작되고, Ai 작업장에서 작업이 종료되면 바로 Ai+1 작업장에서 작업을 시작할 수 있다.
B 조립 라인도 동일한 방식으로 조립을 진행한다. Ai 작업장에서 Bi+1작업장으로 혹은 Bi 작업장에서 Ai+1작업장으로 반조립 제품의 이동이 가능(이동시간이 추가됨)할 때 자동차 1대의 가장 빠른 조립 시간을 구하여라.
[풀이]
import java.util.*;
import java.io.*;
public class Main
{
static int N; // 1<= N <= 1000 작업장의 수
static int[][] A; // A 장업장의 작업시간, B작업장의로의 이동시간
static int[][] B; // B 장업장의 작업시간, ㅁ작업장의로의 이동시간
static int TIME, TIMEA, TIMEB = 0;
public static void main(String[] args) throws IOException
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
N = Integer.parseInt(br.readLine());
A = new int[N][2];
B = new int[N][2];
for (int i = 0; i < N; i++)
{
st = new StringTokenizer(br.readLine());
A[i][0] = Integer.parseInt(st.nextToken()); // Ai작업장의 작업시간
B[i][0] = Integer.parseInt(st.nextToken()); // Bi작업장의 작업시간
if (i != (N - 1))
{
A[i][1] = Integer.parseInt(st.nextToken());
B[i][1] = Integer.parseInt(st.nextToken());
}
}
int nWorkA, nTimeA = 0;
int nWorkB, nTimeB = 0;
nWorkA = nWorkB = 0;
for (int i = 0; i < N - 1; i++)
{
if (N == 1)
break;
nTimeA = Math.min(A[i][0] + nWorkA, B[i][0] + B[i][1] + nWorkB);
nTimeB = Math.min(B[i][0] + nWorkB, A[i][0] + A[i][1] + nWorkA);
nWorkA = nTimeA;
nWorkB = nTimeB;
}
nTimeA += A[N - 1][0];
nTimeB += B[N - 1][0];
System.out.println(Math.min(nTimeA, nTimeB));
}
}
반응형
'ALL' 카테고리의 다른 글
[Softeer/소프티어][Level3]우물 안 개구리(Java) (0) | 2023.01.11 |
---|---|
[Softeer/소프티어][Level3]강의실 배정(Java) (0) | 2023.01.11 |
[Softeer/소프티어][Level4]H-클린알파(Java) (0) | 2023.01.11 |
[Softeer/소프티어][Level3]징검다리(Java) (0) | 2023.01.11 |
[Softeer/소프티어][Level3]수퍼바이러스(Java) (0) | 2023.01.11 |