KoreanFoodie's Study
SW 역량테스트 - [백준] 톱니바퀴 문제 풀이/해답/코드 (C++ / JAVA) 본문
Data Structures, Algorithm/SW 역량테스트
SW 역량테스트 - [백준] 톱니바퀴 문제 풀이/해답/코드 (C++ / JAVA)
GoldGiver 2020. 9. 29. 11:45
SW 역량 테스트 준비를 위한 핵심 문제들을 다룹니다!
해답을 보기 전에 문제를 풀어보시거나, 설계를 하고 오시는 것을 추천드립니다.
코드에 대한 설명은 주석을 참고해 주세요 :)
문제 링크 : www.acmicpc.net/problem/14891
해답 코드 :
#include <iostream>
#include <deque>
#include <vector>
using namespace std;
int K;
deque<int> gear[4];
int dir[4];
// direction of each gear
// 1 : clockwise
// -1 : counter-clockwise
// 0 : stay still
// clockwise turn
void clock(deque<int> g) {
int temp = g.back();
g.pop_back();
g.push_front(temp);
}
// counter-clockwise turn
void c_clock(deque<int> g) {
int temp = g.front();
g.pop_front();
g.push_back(temp);
}
int main() {
int g_t;
int ans = 0;
for (int i = 0; i < 4; i++) {
cin >> g_t;
for (int j = 0; j < 8; j++, g_t /= 10) {
gear[i].push_front(g_t % 10);
}
}
cin >> K;
int rotate[100][2];
int temp_gear;
for (int i = 0; i < K; i++) {
cin >> temp_gear;
rotate[i][0] = temp_gear - 1;
cin >> rotate[i][1];
}
int cur_gear;
int cur_dir;
//dir[0] = 0; dir[1] = 0; dir[2] = 0; dir[3] = 0;
// rotate
for (int rt = 0; rt < K; rt++) {
cur_gear = rotate[rt][0];
cur_dir = rotate[rt][1];
dir[cur_gear] = cur_dir;
// compute direction, ->
for (int i = cur_gear; i < 3; i++) {
if (gear[i][2] == gear[i + 1][6]) {
dir[i + 1] = 0;
cur_dir = 0;
} // different
else {
dir[i + 1] = cur_dir * -1;
cur_dir *= -1;
}
}
// restore direction
cur_dir = rotate[rt][1];
// compute direction, <-
for (int i = cur_gear; i > 0; i--) {
if (gear[i][6] == gear[i - 1][2]) {
dir[i - 1] = 0;
cur_dir = 0;
} // different
else {
dir[i - 1] = cur_dir * -1;
cur_dir *= -1;
}
}
int temp;
for (int i = 0; i < 4; i++) {
if (dir[i] == 1) {
temp = gear[i].back();
gear[i].pop_back();
gear[i].push_front(temp);
}
else if (dir[i] == -1) {
temp = gear[i].front();
gear[i].pop_front();
gear[i].push_back(temp);
}
else {
continue;
}
}
}
for (int i = 0, j = 1; i < 4; i++, j *= 2) {
ans += gear[i][0] * j;
}
cout << ans;
}
SW 역량테스트 준비 - [모의 SW 역량테스트] 풀이 / 코드 / 답안 (C++ / JAVA)
SW 역량테스트 준비 - C++ 코드, Java 코드
SW 역량테스트 준비 - 백준 알고리즘 문제
'Data Structures, Algorithm > SW 역량테스트' 카테고리의 다른 글
SW 역량테스트 - [모의 SW 역량테스트] 원자 소멸 시뮬레이션 문제 풀이/해답/코드 (C++ / JAVA) (0) | 2020.09.29 |
---|---|
SW 역량테스트 - [모의 SW 역량테스트] 줄기세포배양 문제 풀이/해답/코드 (C++ / JAVA) (0) | 2020.09.29 |
SW 역량테스트 - [모의 SW 역량테스트] 미생물 격리 문제 풀이/해답/코드 (C++ / JAVA) (1) | 2020.09.29 |
SW 역량테스트 - [모의 SW 역량테스트] 활주로 건설 문제 풀이/해답/코드 (C++ / JAVA) (0) | 2020.09.29 |
SW 역량테스트 - [모의 SW 역량테스트] 점심 식사시간 문제 풀이/해답/코드 (C++ / JAVA) (0) | 2020.09.29 |
Comments