[문제]
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWIeW7FakkUDFAVH&
[풀이]
제출일 : 2019-08-02 20:18
- C++언어
- 12,628 kb메모리
- 6 ms실행시간
- 1,694코드길이
- Pass결과
이 문제와 동일하다.
2019/08/02 - [BOJ/삼성SW역량테스트] - [BOJ] 14890. 경사로
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
int n, x;
int map[20 * 2][20];
int ans;
void findPath(int r)
{
int stand = map[r][0];
int height[7];
memset(height, 0, sizeof(height));
height[stand] = 1;
for (int i = 1; i < n; i++)
{
int next = map[r][i];
//다음 칸 저장
if (stand != next)
{
if (abs(stand - next) > 1)
{ //높이 차가 1 이상인 경우 -> 경사로 형성 불가
--ans;
return;
}
if (stand < next ) {
//지금까지 지나온 높이가 같은 칸들이 x 이상이어야 한다.
if (height[stand] < x) {
--ans;
return;
}
height[stand] = 0;
height[next] = 1;
}
else { //stand > next => 앞으로 지날 칸들 중 높이가 next와 같은 칸이 x이상 있어야 한다.
for (int j = i; j < i + x && j < n; j++) {
if (next == map[r][j]) {
height[next]++; //얼마나 많은 칸들이 같은지 저장해줌
}
}
if (height[next] < x) {
--ans;
return;
}
height[next] -= x;
i += x-1; //x칸 만큼 땡겨준다.
}
stand = next;
}
else { //stand == next
height[stand]++; //stand가 같은 경우 카운트를 증가해줌
}
} //for 열
}
void init()
{
memset(map, 0, sizeof(map));
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
int t;
cin >> t;
for (int tc = 1; tc <= t; tc++)
{
cin >> n >> x; //격자판의 너비, 경사로의 길이
ans = n * 2;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cin >> map[i][j];
}
}
for (int i = n; i < n * 2; i++)
{
for (int j = 0; j < n; j++)
{
map[i][j] = map[j][i - n];
}
}
for (int i = 0; i < n * 2; i++)
{
findPath(i);
}
cout << "#" << tc << " " << ans << '\n';
}
return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
'SWEA > 삼성SW역량테스트 C++' 카테고리의 다른 글
[SWEA] 원자소멸시뮬레이션 (0) | 2019.10.07 |
---|---|
[SWEA] 점심식사시간 (0) | 2019.09.11 |
[SWEA] 미생물 격리 (0) | 2019.08.01 |
[SWEA] 보호필름 (0) | 2019.08.01 |
[SWEA] 줄기세포배양 (0) | 2019.07.31 |