Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- 전송 계층
- 문제풀이
- C++
- 릿코드
- Transport layer
- 관계형 모델
- 다익스트라
- Network
- 네트워크
- boot sequence
- dp
- swea
- 응용 계층
- Application Layer
- leetcode
- Embedded
- 백준
- STL
- Database
- 데이터베이스
- baekjoon
- ps
- 임베디드
- BHS
- BST
- 부트시퀀스
- 자료구조
- 프로그래머스
- Djikstra
- DB
Archives
- Today
- Total
BOBO's Note
[ Baekjoon ] 5373. 큐빙 본문
https://www.acmicpc.net/problem/5373
풀이 방법
큐브의 각 면의 상태와 회전 등을 Cube라는 클래스로 나타냈다.
#define CUBE_SIZE 3
enum {UP, DOWN, FRONT, BACK, LEFT, RIGHT};
class Cube{
public:
Cube(){
char colors[6] = {'w', 'y', 'r', 'o', 'g', 'b'};
for(int i=0; i<6; i++){
for(int j=0; j<CUBE_SIZE; j++){
for(int k=0; k<CUBE_SIZE; k++){
cube[i][j][k] = colors[i];
}
}
}
}
void rotate(char side, bool clockwise=true);
void print_side(int side){
for(int i=0; i<CUBE_SIZE; i++){
for(int j=0; j<CUBE_SIZE; j++){
cout << cube[side][i][j];
}
cout << '\n';
}
}
private:
char cube[6][CUBE_SIZE][CUBE_SIZE];
// line0 -> line1 -> line2 -> line3 -> line0
void shift(char* line0, char* line1, char* line2, char* line3);
void rotate_side(int side, bool clockwise=true);
};
3*3 큐브가 아래와 같은 단면도를 갖는다고 할 때, 6*3*3 배열에 각 면의 값을 저장했다. 이때, UP, DOWN, FRONT, BACK, LEFT, RIGHT 순으로 저장한다.
큐브의 임의의 면을 시계방향 또는 반시계방향으로 회전하는 메소드는 rotate()이다. 큐브의 면을 회전할 때 해당 면 뿐만 아니라 인접한 네 면의 모서리도 함께 회전된다는 점이다. 각 면에 대해 이를 하드코딩했다.
전체 코드는 여기서 확인할 수 있다.
'Algorithm > Problem Solving' 카테고리의 다른 글
[ Baekjoon ] 1920. 수 찾기 (0) | 2020.06.01 |
---|---|
[ Baekjoon ] 17837. 새로운 게임2 (0) | 2020.05.31 |
[ Baekjoon ] 10217. KCM Travel (0) | 2020.05.28 |
[ Baekjoon ] 1753. 최단 거리 (0) | 2020.05.27 |
[ Baekjoon ] 3190. 뱀 (1) | 2020.05.23 |
Comments