2020 하반기 삼성전자 SW 역량테스트 문제입니다.
복기가 정말 빠르네용
시험에 쉽게 나와서 30분 컷 해서 다행이어씀다 ^^;;
import java.io.*;
import java.util.*;
public class Main {
static int N, K;
static int[] belt;
public static void main(String[] args) throws IOException {
input();
System.out.println(solve());
}
public static int solve() {
boolean[] robot = new boolean[N * 2];
int zeroCnt = 0, time = 0;
while(true) {
time++;
// 벨트 회전 + 로봇 이동
int lastIdx = 2 * N - 1;
int lastBelt = belt[lastIdx];
for(int i = lastIdx; i > 0; i--) belt[i] = belt[i - 1];
belt[0] = lastBelt;
boolean lastRobot = robot[lastIdx];
for(int i = lastIdx; i > 0; i--) robot[i] = robot[i - 1];
robot[0] = lastRobot;
if(robot[N - 1]) robot[N - 1] = false;
// 로봇 이동
for(int i = N - 2; i >= 0; i--) {
if(!robot[i]) continue;
if(belt[i + 1] > 0 && !robot[i + 1]) {
robot[i + 1] = true; belt[i + 1]--; robot[i] = false;
if(belt[i + 1] == 0) zeroCnt++;
}
}
if(!robot[0] && belt[0] > 0) {
robot[0] = true; belt[0]--;
if(belt[0] == 0) zeroCnt++;
}
if(robot[N - 1]) robot[N - 1] = false;
if(zeroCnt >= K) return time;
}
}
public static void input() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
N = Integer.parseInt(st.nextToken()); K = Integer.parseInt(st.nextToken());
belt = new int[N * 2];
st = new StringTokenizer(br.readLine(), " ");
for(int i = 0; i < N*2; i++) belt[i] = Integer.parseInt(st.nextToken());
}
}
상반기에 비하면 너무너무 쉽게 나왔습니다.. 아마 2솔컷이 되지 않을까..
순열이나 조합으로 완전 탐색하는 것도 아니고.. 그냥 반복돌다가 끝날 조건에 부합하면 나오면 끝입니다.
크게 다음과 같은 두가지 행동을 반복하면 됩니다.
- 컨베이어 벨트 한 칸씩 이동 (+ 그 위에 있는 로봇도 옮겨야 합니다)
- 앞으로 갈 수 있는 로봇들 이동
로봇이 벨트 위에 있는지 여부를 boolean 배열로 관리했습니다. 지금 생각해보니 N만큼만 있어도 되겠네요 ^^;;
문제에서 하라는 대로 고대로 if문 덕지덕지 하면 끝입니다..
심심할 때 두번째 문제도 풀어봐야지 희희
면접 가고 싶다!! 감사합니다~!~
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ-17281][시뮬레이션] ⚾ - Java (0) | 2020.10.23 |
---|---|
[BOJ-20056][시뮬레이션] 마법사 상어와 파이어볼 - Java (2) | 2020.10.20 |
[BOJ-19238][시뮬레이션] 스타트 택시 - Java (3) | 2020.10.17 |
[BOJ-19237][시뮬레이션] 어른 상어 - Java (0) | 2020.10.17 |
[BOJ-19236][시뮬레이션/백트래킹] 청소년 상어 - Java (0) | 2020.10.17 |