-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path230316.html
More file actions
153 lines (152 loc) · 28.9 KB
/
230316.html
File metadata and controls
153 lines (152 loc) · 28.9 KB
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>3085번 - 사탕 게임</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/default.min.css">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js" integrity="sha384-w76AqPfDkMBDXo30jS1Sgez6pr3x5MlQ1ZAGC+nuZB+EYdgRZgiwxhTBTkF7CXvN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/highlight.min.js"></script>
<link href="./static/css/main.css" rel="stylesheet">
</head>
<body>
<div class="md-container">
<h2 class="fw-bold">3085번 - 사탕 게임</h2>
<h4 id="-">분류 : 구현, 브루트포스 알고리즘</h4>
<h4 id="-">제약조건</h4>
<ul>
<li><p>가장 처음에 N×N크기에 사탕을 채워 놓는다. 사탕의 색은 모두 같지 않을 수도 있다. 상근이는 사탕의 색이 다른 인접한 두 칸을 고른다. 그 다음 고른 칸에 들어있는 사탕을 서로 교환한다. 이제, 모두 같은 색으로 이루어져 있는 가장 긴 연속 부분(행 또는 열)을 고른 다음 그 사탕을 모두 먹는다.</p>
</li>
<li><p>바꾼 부분이 포함되는 열이나 행이 아니라 전체에서 탐색하는 듯 하다.</p>
</li>
</ul>
<h4 id="-">설계</h4>
<ol>
<li><p>2차원 String 배열에 입력받은 게임판 정보를 담는다.</p>
</li>
<li><p>먼저 사탕을 바꾸기 전에 게임판에서 가장 긴 연속 행이나 열을 찾는다.</p>
<p>(임의의 어떤 연속 행이나 열이 있을 때 무조건 해당 열이나 행을 건들이지 않고 사탕을 교환할 수 있는 수가 존재한다. 무조건 사탕 교환이 한 번은 가능한 입력만 주어지기 때문)</p>
<p>찾은 값을 초기 최대 값으로 선정한다.</p>
</li>
<li><p>settings() 메서드를 구현한다.</p>
<p>열이나 행 하나를 고정하고 새로운 1차원 배열에 내용을 담는다.</p>
<p>getLongest() 메서드를 구현하여 매개변수로 받은 1차원 배열에서 반복문을 통해 가장 긴 연속 열을 찾는다.</p>
</li>
<li><p>checkVertical() 메서드를 이용하여 r,c 좌표 값을 받으면 해당 좌표에서 위,아래로 연속으로 존재하는 열의 길이를 구한다.</p>
<p>checkHorizonal() 메서드를 이용하여 r,c 좌표 값을 받으면 해당 좌표에서 왼,오른으로 연속으로 존재하는 행의 길이를 구한다.</p>
</li>
<li><p>가로로 존재하는 사탕을 교환한다면 바뀐 좌표들의 각각 수직 열을 검사해야하고 해당 좌표들이 존재하는 행을 수평으로 검사해야한다. 이 때 주의해야 할 것은 수평으로 조사하는 경우 한 쪽 방향으로만 조사해야한다.</p>
<p>(무조건 반대 방향에는 다른 색깔이 있기 때문에 색이 달라야 사탕을 바꿀 수 있기 때문)</p>
<p>아래 그림을 보면 이해를 도울 수 있다.</p>
</li>
</ol>
<img src="./static/230316/1.png" alt="">
<div class="sourceCode" id="cb1"><pre
class="sourceCode java"><code class="sourceCode java"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="kw">import</span> <span class="im">java</span><span class="op">.</span><span class="im">io</span><span class="op">.</span><span class="im">BufferedReader</span><span class="op">;</span></span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a><span class="kw">import</span> <span class="im">java</span><span class="op">.</span><span class="im">io</span><span class="op">.</span><span class="im">IOException</span><span class="op">;</span></span>
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a><span class="kw">import</span> <span class="im">java</span><span class="op">.</span><span class="im">io</span><span class="op">.</span><span class="im">InputStreamReader</span><span class="op">;</span></span>
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a><span class="kw">public</span> <span class="kw">class</span> Main <span class="op">{</span></span>
<span id="cb1-6"><a href="#cb1-6" aria-hidden="true" tabindex="-1"></a> <span class="dt">static</span> <span class="dt">int</span> n<span class="op">;</span></span>
<span id="cb1-7"><a href="#cb1-7" aria-hidden="true" tabindex="-1"></a> <span class="dt">static</span> <span class="bu">String</span><span class="op">[][]</span> board<span class="op">;</span></span>
<span id="cb1-8"><a href="#cb1-8" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-9"><a href="#cb1-9" aria-hidden="true" tabindex="-1"></a> <span class="kw">public</span> <span class="dt">static</span> <span class="dt">void</span> <span class="fu">main</span><span class="op">(</span><span class="bu">String</span><span class="op">[]</span> args<span class="op">)</span> <span class="kw">throws</span> <span class="bu">IOException</span> <span class="op">{</span></span>
<span id="cb1-10"><a href="#cb1-10" aria-hidden="true" tabindex="-1"></a> <span class="bu">BufferedReader</span> bf <span class="op">=</span> <span class="kw">new</span> <span class="bu">BufferedReader</span><span class="op">(</span><span class="kw">new</span> <span class="bu">InputStreamReader</span><span class="op">(</span><span class="bu">System</span><span class="op">.</span><span class="fu">in</span><span class="op">));</span></span>
<span id="cb1-11"><a href="#cb1-11" aria-hidden="true" tabindex="-1"></a> n <span class="op">=</span> <span class="bu">Integer</span><span class="op">.</span><span class="fu">parseInt</span><span class="op">(</span>bf<span class="op">.</span><span class="fu">readLine</span><span class="op">().</span><span class="fu">strip</span><span class="op">());</span></span>
<span id="cb1-12"><a href="#cb1-12" aria-hidden="true" tabindex="-1"></a> board <span class="op">=</span> <span class="kw">new</span> <span class="bu">String</span><span class="op">[</span>n<span class="op">][</span>n<span class="op">];</span></span>
<span id="cb1-13"><a href="#cb1-13" aria-hidden="true" tabindex="-1"></a> <span class="cf">for</span> <span class="op">(</span><span class="dt">int</span> i <span class="op">=</span> <span class="dv">0</span><span class="op">;</span> i <span class="op"><</span> n<span class="op">;</span> i<span class="op">++)</span> <span class="op">{</span></span>
<span id="cb1-14"><a href="#cb1-14" aria-hidden="true" tabindex="-1"></a> <span class="bu">String</span><span class="op">[]</span> tmp <span class="op">=</span> bf<span class="op">.</span><span class="fu">readLine</span><span class="op">().</span><span class="fu">split</span><span class="op">(</span><span class="st">""</span><span class="op">);</span></span>
<span id="cb1-15"><a href="#cb1-15" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> <span class="op">(</span>n <span class="op">>=</span> <span class="dv">0</span><span class="op">)</span> <span class="bu">System</span><span class="op">.</span><span class="fu">arraycopy</span><span class="op">(</span>tmp<span class="op">,</span> <span class="dv">0</span><span class="op">,</span> board<span class="op">[</span>i<span class="op">],</span> <span class="dv">0</span><span class="op">,</span> n<span class="op">);</span></span>
<span id="cb1-16"><a href="#cb1-16" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
<span id="cb1-17"><a href="#cb1-17" aria-hidden="true" tabindex="-1"></a> <span class="bu">System</span><span class="op">.</span><span class="fu">out</span><span class="op">.</span><span class="fu">println</span><span class="op">(</span><span class="fu">game</span><span class="op">());</span></span>
<span id="cb1-18"><a href="#cb1-18" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
<span id="cb1-19"><a href="#cb1-19" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-20"><a href="#cb1-20" aria-hidden="true" tabindex="-1"></a> <span class="dt">static</span> <span class="dt">int</span> <span class="fu">settings</span><span class="op">()</span> <span class="op">{</span></span>
<span id="cb1-21"><a href="#cb1-21" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> res <span class="op">=</span> <span class="dv">0</span><span class="op">;</span></span>
<span id="cb1-22"><a href="#cb1-22" aria-hidden="true" tabindex="-1"></a> <span class="cf">for</span> <span class="op">(</span><span class="dt">int</span> i <span class="op">=</span> <span class="dv">0</span><span class="op">;</span> i <span class="op"><</span> n<span class="op">;</span> i<span class="op">++)</span></span>
<span id="cb1-23"><a href="#cb1-23" aria-hidden="true" tabindex="-1"></a> res <span class="op">=</span> <span class="bu">Math</span><span class="op">.</span><span class="fu">max</span><span class="op">(</span>res<span class="op">,</span><span class="fu">getLongest</span><span class="op">(</span>board<span class="op">[</span>i<span class="op">]));</span></span>
<span id="cb1-24"><a href="#cb1-24" aria-hidden="true" tabindex="-1"></a> <span class="cf">for</span> <span class="op">(</span><span class="dt">int</span> i <span class="op">=</span> <span class="dv">0</span><span class="op">;</span> i <span class="op"><</span> n<span class="op">;</span> i<span class="op">++)</span> <span class="op">{</span></span>
<span id="cb1-25"><a href="#cb1-25" aria-hidden="true" tabindex="-1"></a> <span class="bu">String</span><span class="op">[]</span> tmp <span class="op">=</span> <span class="kw">new</span> <span class="bu">String</span><span class="op">[</span>n<span class="op">];</span></span>
<span id="cb1-26"><a href="#cb1-26" aria-hidden="true" tabindex="-1"></a> <span class="cf">for</span> <span class="op">(</span><span class="dt">int</span> j <span class="op">=</span> <span class="dv">0</span><span class="op">;</span> j <span class="op"><</span> n<span class="op">;</span> j<span class="op">++)</span></span>
<span id="cb1-27"><a href="#cb1-27" aria-hidden="true" tabindex="-1"></a> tmp<span class="op">[</span>j<span class="op">]</span> <span class="op">=</span> board<span class="op">[</span>j<span class="op">][</span>i<span class="op">];</span></span>
<span id="cb1-28"><a href="#cb1-28" aria-hidden="true" tabindex="-1"></a> res <span class="op">=</span> <span class="bu">Math</span><span class="op">.</span><span class="fu">max</span><span class="op">(</span>res<span class="op">,</span><span class="fu">getLongest</span><span class="op">(</span>tmp<span class="op">));</span></span>
<span id="cb1-29"><a href="#cb1-29" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
<span id="cb1-30"><a href="#cb1-30" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> res<span class="op">;</span></span>
<span id="cb1-31"><a href="#cb1-31" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
<span id="cb1-32"><a href="#cb1-32" aria-hidden="true" tabindex="-1"></a> <span class="dt">static</span> <span class="dt">int</span> <span class="fu">game</span><span class="op">()</span> <span class="op">{</span></span>
<span id="cb1-33"><a href="#cb1-33" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> res <span class="op">=</span> <span class="fu">settings</span><span class="op">();</span></span>
<span id="cb1-34"><a href="#cb1-34" aria-hidden="true" tabindex="-1"></a> <span class="cf">for</span> <span class="op">(</span><span class="dt">int</span> i <span class="op">=</span> <span class="dv">0</span><span class="op">;</span> i <span class="op"><</span> n<span class="op">;</span> i<span class="op">++)</span></span>
<span id="cb1-35"><a href="#cb1-35" aria-hidden="true" tabindex="-1"></a> <span class="cf">for</span> <span class="op">(</span><span class="dt">int</span> j <span class="op">=</span> <span class="dv">0</span><span class="op">;</span> j <span class="op"><</span> n<span class="op">;</span> j<span class="op">++)</span> <span class="op">{</span></span>
<span id="cb1-36"><a href="#cb1-36" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> <span class="op">(</span>j <span class="op"><</span> n <span class="op">-</span> <span class="dv">1</span> <span class="op">&&</span> <span class="op">!</span>board<span class="op">[</span>i<span class="op">][</span>j<span class="op">].</span><span class="fu">equals</span><span class="op">(</span>board<span class="op">[</span>i<span class="op">][</span>j<span class="op">+</span><span class="dv">1</span><span class="op">]))</span> <span class="op">{</span></span>
<span id="cb1-37"><a href="#cb1-37" aria-hidden="true" tabindex="-1"></a> res <span class="op">=</span> <span class="bu">Math</span><span class="op">.</span><span class="fu">max</span><span class="op">(</span>res<span class="op">,</span> <span class="fu">checkVertical</span><span class="op">(</span>i<span class="op">,</span> j<span class="op">,</span> board<span class="op">[</span>i<span class="op">][</span>j<span class="op">+</span><span class="dv">1</span><span class="op">],</span><span class="kw">true</span><span class="op">,</span><span class="kw">true</span><span class="op">));</span></span>
<span id="cb1-38"><a href="#cb1-38" aria-hidden="true" tabindex="-1"></a> res <span class="op">=</span> <span class="bu">Math</span><span class="op">.</span><span class="fu">max</span><span class="op">(</span>res<span class="op">,</span> <span class="fu">checkVertical</span><span class="op">(</span>i<span class="op">,</span> j <span class="op">+</span> <span class="dv">1</span><span class="op">,</span> board<span class="op">[</span>i<span class="op">][</span>j<span class="op">],</span><span class="kw">true</span><span class="op">,</span><span class="kw">true</span><span class="op">));</span></span>
<span id="cb1-39"><a href="#cb1-39" aria-hidden="true" tabindex="-1"></a> res <span class="op">=</span> <span class="bu">Math</span><span class="op">.</span><span class="fu">max</span><span class="op">(</span>res<span class="op">,</span> <span class="fu">checkHorizonal</span><span class="op">(</span>i<span class="op">,</span> j<span class="op">,</span> board<span class="op">[</span>i<span class="op">][</span>j<span class="op">+</span><span class="dv">1</span><span class="op">],</span><span class="kw">true</span><span class="op">,</span><span class="kw">false</span><span class="op">));</span></span>
<span id="cb1-40"><a href="#cb1-40" aria-hidden="true" tabindex="-1"></a> res <span class="op">=</span> <span class="bu">Math</span><span class="op">.</span><span class="fu">max</span><span class="op">(</span>res<span class="op">,</span> <span class="fu">checkHorizonal</span><span class="op">(</span>i<span class="op">,</span> j <span class="op">+</span> <span class="dv">1</span><span class="op">,</span> board<span class="op">[</span>i<span class="op">][</span>j<span class="op">],</span><span class="kw">false</span><span class="op">,</span><span class="kw">true</span><span class="op">));</span></span>
<span id="cb1-41"><a href="#cb1-41" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
<span id="cb1-42"><a href="#cb1-42" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> <span class="op">(</span>i <span class="op"><</span> n <span class="op">-</span> <span class="dv">1</span> <span class="op">&&</span> <span class="op">!</span>board<span class="op">[</span>i<span class="op">][</span>j<span class="op">].</span><span class="fu">equals</span><span class="op">(</span>board<span class="op">[</span>i<span class="op">+</span><span class="dv">1</span><span class="op">][</span>j<span class="op">]))</span> <span class="op">{</span></span>
<span id="cb1-43"><a href="#cb1-43" aria-hidden="true" tabindex="-1"></a> res <span class="op">=</span> <span class="bu">Math</span><span class="op">.</span><span class="fu">max</span><span class="op">(</span>res<span class="op">,</span> <span class="fu">checkHorizonal</span><span class="op">(</span>i<span class="op">,</span> j<span class="op">,</span> board<span class="op">[</span>i<span class="op">+</span><span class="dv">1</span><span class="op">][</span>j<span class="op">],</span><span class="kw">true</span><span class="op">,</span><span class="kw">true</span><span class="op">));</span></span>
<span id="cb1-44"><a href="#cb1-44" aria-hidden="true" tabindex="-1"></a> res <span class="op">=</span> <span class="bu">Math</span><span class="op">.</span><span class="fu">max</span><span class="op">(</span>res<span class="op">,</span> <span class="fu">checkHorizonal</span><span class="op">(</span>i <span class="op">+</span> <span class="dv">1</span><span class="op">,</span> j<span class="op">,</span> board<span class="op">[</span>i<span class="op">][</span>j<span class="op">],</span><span class="kw">true</span><span class="op">,</span><span class="kw">true</span><span class="op">));</span></span>
<span id="cb1-45"><a href="#cb1-45" aria-hidden="true" tabindex="-1"></a> res <span class="op">=</span> <span class="bu">Math</span><span class="op">.</span><span class="fu">max</span><span class="op">(</span>res<span class="op">,</span> <span class="fu">checkVertical</span><span class="op">(</span>i<span class="op">,</span> j<span class="op">,</span> board<span class="op">[</span>i<span class="op">+</span><span class="dv">1</span><span class="op">][</span>j<span class="op">],</span><span class="kw">true</span><span class="op">,</span><span class="kw">false</span><span class="op">));</span></span>
<span id="cb1-46"><a href="#cb1-46" aria-hidden="true" tabindex="-1"></a> res <span class="op">=</span> <span class="bu">Math</span><span class="op">.</span><span class="fu">max</span><span class="op">(</span>res<span class="op">,</span> <span class="fu">checkVertical</span><span class="op">(</span>i <span class="op">+</span> <span class="dv">1</span><span class="op">,</span> j<span class="op">,</span> board<span class="op">[</span>i<span class="op">][</span>j<span class="op">],</span><span class="kw">false</span><span class="op">,</span><span class="kw">true</span><span class="op">));</span></span>
<span id="cb1-47"><a href="#cb1-47" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
<span id="cb1-48"><a href="#cb1-48" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-49"><a href="#cb1-49" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
<span id="cb1-50"><a href="#cb1-50" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> res<span class="op">;</span></span>
<span id="cb1-51"><a href="#cb1-51" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
<span id="cb1-52"><a href="#cb1-52" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-53"><a href="#cb1-53" aria-hidden="true" tabindex="-1"></a> <span class="dt">static</span> <span class="dt">int</span> <span class="fu">checkVertical</span><span class="op">(</span><span class="dt">int</span> r<span class="op">,</span> <span class="dt">int</span> c<span class="op">,</span> <span class="bu">String</span> color<span class="op">,</span> <span class="dt">boolean</span> up<span class="op">,</span> <span class="dt">boolean</span> down<span class="op">)</span> <span class="op">{</span></span>
<span id="cb1-54"><a href="#cb1-54" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> res <span class="op">=</span> <span class="dv">1</span><span class="op">;</span></span>
<span id="cb1-55"><a href="#cb1-55" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> rSave <span class="op">=</span> r<span class="op">;</span></span>
<span id="cb1-56"><a href="#cb1-56" aria-hidden="true" tabindex="-1"></a> r<span class="op">--;</span></span>
<span id="cb1-57"><a href="#cb1-57" aria-hidden="true" tabindex="-1"></a> <span class="cf">while</span> <span class="op">(</span>up <span class="op">&&</span> r <span class="op">></span> <span class="op">-</span><span class="dv">1</span> <span class="op">&&</span> board<span class="op">[</span>r<span class="op">][</span>c<span class="op">].</span><span class="fu">equals</span><span class="op">(</span>color<span class="op">))</span> <span class="op">{</span></span>
<span id="cb1-58"><a href="#cb1-58" aria-hidden="true" tabindex="-1"></a> res<span class="op">++;</span></span>
<span id="cb1-59"><a href="#cb1-59" aria-hidden="true" tabindex="-1"></a> r<span class="op">--;</span></span>
<span id="cb1-60"><a href="#cb1-60" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
<span id="cb1-61"><a href="#cb1-61" aria-hidden="true" tabindex="-1"></a> r <span class="op">=</span> rSave<span class="op">;</span></span>
<span id="cb1-62"><a href="#cb1-62" aria-hidden="true" tabindex="-1"></a> r<span class="op">++;</span></span>
<span id="cb1-63"><a href="#cb1-63" aria-hidden="true" tabindex="-1"></a> <span class="cf">while</span> <span class="op">(</span>down <span class="op">&&</span> r <span class="op"><</span> n <span class="op">&&</span> board<span class="op">[</span>r<span class="op">][</span>c<span class="op">].</span><span class="fu">equals</span><span class="op">(</span>color<span class="op">))</span> <span class="op">{</span></span>
<span id="cb1-64"><a href="#cb1-64" aria-hidden="true" tabindex="-1"></a> res<span class="op">++;</span></span>
<span id="cb1-65"><a href="#cb1-65" aria-hidden="true" tabindex="-1"></a> r<span class="op">++;</span></span>
<span id="cb1-66"><a href="#cb1-66" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
<span id="cb1-67"><a href="#cb1-67" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> res<span class="op">;</span></span>
<span id="cb1-68"><a href="#cb1-68" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
<span id="cb1-69"><a href="#cb1-69" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-70"><a href="#cb1-70" aria-hidden="true" tabindex="-1"></a> <span class="dt">static</span> <span class="dt">int</span> <span class="fu">checkHorizonal</span><span class="op">(</span><span class="dt">int</span> r<span class="op">,</span> <span class="dt">int</span> c<span class="op">,</span> <span class="bu">String</span> color<span class="op">,</span><span class="dt">boolean</span> up<span class="op">,</span> <span class="dt">boolean</span> down<span class="op">)</span> <span class="op">{</span></span>
<span id="cb1-71"><a href="#cb1-71" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> res <span class="op">=</span> <span class="dv">1</span><span class="op">;</span></span>
<span id="cb1-72"><a href="#cb1-72" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> cSave <span class="op">=</span> c<span class="op">;</span></span>
<span id="cb1-73"><a href="#cb1-73" aria-hidden="true" tabindex="-1"></a> c<span class="op">--;</span></span>
<span id="cb1-74"><a href="#cb1-74" aria-hidden="true" tabindex="-1"></a> <span class="cf">while</span> <span class="op">(</span>up <span class="op">&&</span> c <span class="op">></span> <span class="op">-</span><span class="dv">1</span> <span class="op">&&</span> board<span class="op">[</span>r<span class="op">][</span>c<span class="op">].</span><span class="fu">equals</span><span class="op">(</span>color<span class="op">))</span> <span class="op">{</span></span>
<span id="cb1-75"><a href="#cb1-75" aria-hidden="true" tabindex="-1"></a> res<span class="op">++;</span></span>
<span id="cb1-76"><a href="#cb1-76" aria-hidden="true" tabindex="-1"></a> c<span class="op">--;</span></span>
<span id="cb1-77"><a href="#cb1-77" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
<span id="cb1-78"><a href="#cb1-78" aria-hidden="true" tabindex="-1"></a> c <span class="op">=</span> cSave<span class="op">;</span></span>
<span id="cb1-79"><a href="#cb1-79" aria-hidden="true" tabindex="-1"></a> c<span class="op">++;</span></span>
<span id="cb1-80"><a href="#cb1-80" aria-hidden="true" tabindex="-1"></a> <span class="cf">while</span> <span class="op">(</span>down <span class="op">&&</span> c <span class="op"><</span> n <span class="op">&&</span> board<span class="op">[</span>r<span class="op">][</span>c<span class="op">].</span><span class="fu">equals</span><span class="op">(</span>color<span class="op">))</span> <span class="op">{</span></span>
<span id="cb1-81"><a href="#cb1-81" aria-hidden="true" tabindex="-1"></a> res<span class="op">++;</span></span>
<span id="cb1-82"><a href="#cb1-82" aria-hidden="true" tabindex="-1"></a> c<span class="op">++;</span></span>
<span id="cb1-83"><a href="#cb1-83" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
<span id="cb1-84"><a href="#cb1-84" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> res<span class="op">;</span></span>
<span id="cb1-85"><a href="#cb1-85" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
<span id="cb1-86"><a href="#cb1-86" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-87"><a href="#cb1-87" aria-hidden="true" tabindex="-1"></a> <span class="dt">static</span> <span class="dt">int</span> <span class="fu">getLongest</span><span class="op">(</span><span class="bu">String</span><span class="op">[]</span> arr<span class="op">)</span> <span class="op">{</span></span>
<span id="cb1-88"><a href="#cb1-88" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> res <span class="op">=</span> <span class="dv">1</span><span class="op">;</span></span>
<span id="cb1-89"><a href="#cb1-89" aria-hidden="true" tabindex="-1"></a> <span class="dt">int</span> cnt <span class="op">=</span> <span class="dv">1</span><span class="op">;</span></span>
<span id="cb1-90"><a href="#cb1-90" aria-hidden="true" tabindex="-1"></a> <span class="bu">String</span> current <span class="op">=</span> arr<span class="op">[</span><span class="dv">0</span><span class="op">];</span></span>
<span id="cb1-91"><a href="#cb1-91" aria-hidden="true" tabindex="-1"></a> <span class="cf">for</span> <span class="op">(</span><span class="dt">int</span> i <span class="op">=</span> <span class="dv">1</span><span class="op">;</span> i <span class="op"><</span> n<span class="op">;</span> i<span class="op">++)</span> <span class="op">{</span></span>
<span id="cb1-92"><a href="#cb1-92" aria-hidden="true" tabindex="-1"></a> <span class="cf">if</span> <span class="op">(</span>current<span class="op">.</span><span class="fu">equals</span><span class="op">(</span>arr<span class="op">[</span>i<span class="op">]))</span></span>
<span id="cb1-93"><a href="#cb1-93" aria-hidden="true" tabindex="-1"></a> cnt<span class="op">++;</span></span>
<span id="cb1-94"><a href="#cb1-94" aria-hidden="true" tabindex="-1"></a> <span class="cf">else</span> <span class="op">{</span></span>
<span id="cb1-95"><a href="#cb1-95" aria-hidden="true" tabindex="-1"></a> res <span class="op">=</span> <span class="bu">Math</span><span class="op">.</span><span class="fu">max</span><span class="op">(</span>res<span class="op">,</span>cnt<span class="op">);</span></span>
<span id="cb1-96"><a href="#cb1-96" aria-hidden="true" tabindex="-1"></a> current <span class="op">=</span> arr<span class="op">[</span>i<span class="op">];</span></span>
<span id="cb1-97"><a href="#cb1-97" aria-hidden="true" tabindex="-1"></a> cnt <span class="op">=</span> <span class="dv">1</span><span class="op">;</span></span>
<span id="cb1-98"><a href="#cb1-98" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
<span id="cb1-99"><a href="#cb1-99" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
<span id="cb1-100"><a href="#cb1-100" aria-hidden="true" tabindex="-1"></a> res <span class="op">=</span> <span class="bu">Math</span><span class="op">.</span><span class="fu">max</span><span class="op">(</span>res<span class="op">,</span>cnt<span class="op">);</span></span>
<span id="cb1-101"><a href="#cb1-101" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> res<span class="op">;</span></span>
<span id="cb1-102"><a href="#cb1-102" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
<span id="cb1-103"><a href="#cb1-103" aria-hidden="true" tabindex="-1"></a><span class="op">}</span></span></code></pre></div>
</div>
</body>
</html>