[๋ฐฑ์ค] ๐ฅ 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
๊ฐ์ธ ๊ณต๋ถ ๊ธฐ๋ก์ฉ ๋ธ๋ก๊ทธ์
๋๋ค.
ํ๋ฆฌ๊ฑฐ๋ ์ค๋ฅ๊ฐ ์์ ๊ฒฝ์ฐ ์ ๋ณดํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.๐