๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/5002)
< ๋์ด๋งจ >
๋ฌธ์ ํ์ด
์ฌ์์ ๋จ์์ ์ฐจ์ด๋ฅผ ์ต์๊ฐ ๋๋๋ก ์ฌ์์ ๋จ์ ์๋ฅผ ๋น๊ตํด ์ ์ ์ฑ๋ณ์ ๋จผ์ ์ ์ฅ์ํจ๋ค. ๋ง์ฝ ์ฌ๋ ์๊ฐ ์ ์ ์ฑ๋ณ์ ๋จผ์ ์ ์ฅ์ํฌ ์ ์๋ค๋ฉด ์ ์ธ์ด๊ฐ ๊ธฐ์ตํ ์ ์๋ ์ฐจ์ด ๋ด์์ ์ฌ๋ ์๊ฐ ๋ง์ ์ฑ๋ณ์ ์ ์ฅ์ํจ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class _5002_ { // ๋์ด๋งจ
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int x = Integer.parseInt(bf.readLine());
String str = bf.readLine();
int w = 0, m = 0, idx1 = 0, idx2 = 1;
while (Math.abs(m - w) <= x && x != 0) {
if (idx1 == 0) {
if (str.charAt(0) == 'M') {
m += 1;
} else {
w += 1;
}
idx1 = idx2 + 1;
}
if (Math.abs(m - w) > x || (idx1 >= str.length() && idx2 >= str.length())) {
break;
}
boolean flag = false;
if (m > w) {
if (idx1 < str.length() && w + 1 - m <= x && str.charAt(idx1) == 'W') {
flag = true;
w += 1;
idx1 = Math.max(idx1, idx2) + 1;
} else if (idx2 < str.length() && w + 1 - m <= x && str.charAt(idx2) == 'W') {
flag = true;
w += 1;
idx2 = Math.max(idx1, idx2) + 1;
} else if (idx1 < str.length() && m + 1 - w <= x && str.charAt(idx1) == 'M') {
flag = true;
m += 1;
idx1 = Math.max(idx1, idx2) + 1;
} else if (idx2 < str.length() && m + 1 - w <= x && str.charAt(idx2) == 'M') {
flag = true;
m += 1;
idx2 = Math.max(idx1, idx2) + 1;
}
} else {
if (idx1 < str.length() && m + 1 - w <= x && str.charAt(idx1) == 'M') {
flag = true;
m += 1;
idx1 = Math.max(idx1, idx2) + 1;
} else if (idx2 < str.length() && m + 1 - w <= x && str.charAt(idx2) == 'M') {
flag = true;
m += 1;
idx2 = Math.max(idx1, idx2) + 1;
} else if (idx1 < str.length() && w + 1 - m <= x && str.charAt(idx1) == 'W') {
flag = true;
w += 1;
idx1 = Math.max(idx1, idx2) + 1;
} else if (idx2 < str.length() && w + 1 - m <= x && str.charAt(idx2) == 'W') {
flag = true;
w += 1;
idx2 = Math.max(idx1, idx2) + 1;
}
}
if (!flag) {
break;
}
}
System.out.println(m + w);
}
}
๋ณ์)
x : ๊ธฐ์ตํ ์ ์๋ ๊ฐ์ฅ ํฐ ์ฐจ์ด
str : ์ค์ ์ ์๋ ์์
w, m : ์ ์ฅํ ์ฌ์, ๋จ์ ์ฌ๋ ์
idx1, idx2 : ์ค์ ์ ์๋ ์ฒซ ๋ฒ์งธ, ๋ ๋ฒ์งธ ์ฌ๋
flag : ์ ์ฅ ์ฌ๋ถ
๊ธฐ์ตํ ์ ์๋ ๊ฐ์ฅ ํฐ ์ฐจ์ด๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ์ค์ ์ ์๋ ์์๋ฅผ ์ ๋ ฅ๋ฐ์ ์ ์ฅํ ์ฌ์์ ๋จ์ ์ ์ฐจ์ด๊ฐ x์ดํ์ผ ๋ ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
1) ์ ์ผ ์ฒ์์ ์ ์ฅํ ๋๋ ์ฌ์์ธ์ง ๋จ์์ธ์ง ์๊ด์์ผ๋ฏ๋ก 0๋ฒ์งธ ์ฌ๋์ ์ ์ฅ์ํจ๋ค.
2) ์ ์ฅํ ์ฌ์์ ๋จ์์ ์ ์ฐจ์ด๊ฐ x๋ณด๋ค ํฌ๊ฑฐ๋ ์ค์ ์ ์๋ ๋ชจ๋ ์ฌ๋์ ๋ค ์ ์ฅ์์ผฐ๋ค๋ฉด ์ข ๋ฃํ๋ค.
3) ์ ์ฅํ ์ฌ๋ ์ค ๋จ์ ์๊ฐ ๋ ๋ง๋ค๋ฉด
3-1) ์ค ์ ์๋ ์ฌ๋์ ์ฒซ ๋ฒ์งธ ์ฌ๋, ๋ ๋ฒ์งธ ์ฌ๋ ์ค์์ ์ฌ์๊ฐ ์๋ค๋ฉด ์ ์ฅ์ํจ๋ค.
3-2) ์ฌ์๊ฐ ์๊ณ ๋จ์๋ฅผ ์ ์ฅ์์ผฐ์ ๋ ์ ์ฅํ ์ฌ์์ ๋จ์์ ์ฐจ์ด ์๊ฐ x์ดํ๋ผ๋ฉด ๋จ์๋ฅผ ์ ์ฅ์ํจ๋ค.
4) ์ ์ฅํ ์ฌ๋ ์ค ์ฌ์ ์๊ฐ ๋ ๋ง๋ค๋ฉด
4-1) ์ค ์ ์๋ ์ฌ๋์ ์ฒซ ๋ฒ์งธ ์ฌ๋, ๋ ๋ฒ์งธ ์ฌ๋ ์ค์์ ๋จ์๊ฐ ์๋ค๋ฉด ์ ์ฅ์ํจ๋ค.
4-2) ๋จ์๊ฐ ์๊ณ ์ฌ์๋ฅผ ์ ์ฅ์์ผฐ์ ๋ ์ ์ฅํ ์ฌ์์ ๋จ์์ ์ฐจ์ด ์๊ฐ x์ดํ๋ผ๋ฉด ์ฌ์๋ฅผ ์ ์ฅ์ํจ๋ค.
5) ๋ง์ฝ ์๋ฌด๋ ์ ์ฅ์ํฌ ์ ์๋ ์ํฉ์ด๋ผ๋ฉด ์ข ๋ฃํ๋ค.
์ต์ข ์ ์ฅํ ์ฌ๋ ์์ธ m+w๋ฅผ ์ถ๋ ฅํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 26170_์ฌ๊ณผ ๋นจ๋ฆฌ ๋จน๊ธฐ (0) | 2024.06.21 |
---|---|
[Baekjoon] 2777_์ซ์ ๋์ด (0) | 2024.06.20 |
[Baekjoon] 2072_์ค๋ชฉ (0) | 2024.06.18 |
[Baekjoon] 1120_๋ฌธ์์ด (0) | 2024.06.17 |
[Baekjoon] 12887_๊ฒฝ๋ก ๊ฒ์ (0) | 2024.06.14 |