[๋ฐฑ์ค] ๐ฅ 1283 ๋จ์ถํค ์ง์
๐ ๋์ด๋
๐ฅ Silver 1
๐ ๋ฌธ์
https://www.acmicpc.net/problem/1283


๐ ํ์ด
์ด๊ฒ๋ ์ง๊ธ๊น์ง ์ญ ํ์ด์จ ๊ฒ๊ณผ ๊ฐ์ ๊ตฌํ๊ณผ ๊ด๋ จ๋ ๋ฌธ์ ์๋ค.
ํ์ง๋ง ์ด ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ๋ฐฐ์ด์ ํ๊ณ์ ๋ํด์ ๋๊ผ์ผ๋ฉฐ, ๋ฆฌ์คํธ์ ๋ํด์ ๊ณต๋ถํด์ผ๊ฒ ๋ค๋ ์๊ฐ์ ๊ฐ์ง๊ฒ ๋์๋ค.
๋ค์ด์ค๋ OPTION์ ๊ฐ์๋ ๋ฌธ์ ๊ฐ ์๋์ง๋ง, OPTION๋ง๋ค ๊ธ์ ์๊ฐ ๋ฌ๋ผ์ ๋์ ํ ๋น์ ํ์์ฑ์ ์ ์คํ ๋๊ผ๋ค.
์ด๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ์ฌ ๋ฐ์ String์ ๋ฐ๋ก ๋ฐฐ์ด์ ๋ด๊ฑฐ๋ ํ์ง ์๊ณ , ๋จ์ ๋น๊ต๋ฅผ ํตํด์ pos๊ฐ์ ์์๋ด์ด printํ๊ธฐ์ ์ต์ข
result๊ฐ์ ์ถ๊ฐํ ๋, pos๊ฐ์ ์๋ ๋ฌธ์์ ์์์ []๋ฅผ ์ถ๊ฐํด ์ฃผ๋ ์์ผ๋ก ๊ตฌํ์ ํ์๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก hotkeys๋ผ๋ ๋ฆฌ์คํธ๋ฅผ ๋ง๋ค๊ณ , ์ด hotkeys์ word๋ฅผ ๋น๊ตํ์ฌ, ์์ผ๋ฉด ๋จ์ ๋ชจ๋ ํจ์๋ค์ skip์ด๋ผ๋ ๋ณ์๋ฅผ ํตํ์ฌ ์คํตํ๊ฒ ํ์๋ค.
์ฒซ๋ฒ์งธ ๋จ์ด์ธ์ง ๊ตฌ๋ถํ๊ธฐ ์ํ์ฌ flag๋ผ๋ booleanํ์
์ ๋ณ์๋ฅผ ์์ฑํ์ฌ ๊ธฐ๋ณธ์ ์ผ๋ก true๋ก ์์ฑ๋๊ณ , ํ๋ฒ ๋ฌธ์๋ฅผ ๋ฝ์๋ผ๋ ๊ณต๋ฐฑ์ด ์๋๋ฉด false๋ก ๋ฐ๊พธ๊ณ , ๊ณต๋ฐฑ์ด๋ฉด true๋ก ๋ฐ๊พธ๋ ์์ผ๋ก ๋์์ฐ๊ธฐ ์ดํ ์ฒซ ๊ธ์๋ฅผ ์์๋ด์๋ค.
๐ Code
package Implements;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
public class N1283 {
public static List<String> hotkeys;
public static String result = "";
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter((System.out)));
StringTokenizer st = new StringTokenizer(br.readLine());
int num = Integer.parseInt(st.nextToken());
hotkeys = new ArrayList<String>();
for (int i = 0; i < num; i++) {
st = new StringTokenizer(br.readLine());
MakeHotkey(st);
}
System.out.println(result.subSequence(0, result.length() - 1));
}
public static void MakeHotkey(StringTokenizer st) {
String option = "";
while (st.hasMoreTokens()) {
option += st.nextToken();
if (st.hasMoreTokens()) {
option += " ";
}
}
boolean flag = true;
boolean skip = false;
int pos = -1;
for (String word : option.split("")) {
if (!skip) {
pos += 1;
if (flag) {
flag = false;
if (!hotkeys.contains(word.toUpperCase())) {
hotkeys.add(word.toUpperCase());
skip = true;
}
}
if (word.equals(" ")) {
flag = true;
}
}
}
if (!skip) {
pos = -1;
}
for (String word : option.split("")) {
if (!skip) {
pos += 1;
if (!word.equals(" ")) {
if (!hotkeys.contains(word.toUpperCase())) {
hotkeys.add(word.toUpperCase());
skip = true;
}
}
}
}
if (skip) {
InsertOption(option, pos);
} else {
InsertOption(option, -10);
}
}
public static void InsertOption(String option, int pos) {
if (pos != -10) {
StringBuffer sb = new StringBuffer();
sb.append(option);
sb.insert(pos + 1, "]");
sb.insert(pos, "[");
result += sb + "\n";
} else {
result += option + "\n";
}
}
}
package (์ด๋ฆ); ๋ฅผ ๋๊ณ , class ์ด๋ฆ์ Main์ผ๋ก ๋ณ๊ฒฝํ๋ฉด ๋๋ค.
๐ ์ถ๊ฐ ์์
[Input]
5
AAA AAA AAA AAA
AAA BCC CCC DDD
AAA BBB CCC DDD
AGF AAA AAA AAA
AAA AAA AAA AAA
[Input]
12
Aab
Z bcd
a hw rf
h aH
BB hRf
haa aje
AHHAB Bz
ah zb a a k
ABB III
ajjeEt hhq
a j h h e o
apP po
๊ฐ์ธ ๊ณต๋ถ ๊ธฐ๋ก์ฉ ๋ธ๋ก๊ทธ์
๋๋ค.
ํ๋ฆฌ๊ฑฐ๋ ์ค๋ฅ๊ฐ ์์ ๊ฒฝ์ฐ ์ ๋ณดํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.๐