1. ๋ฌธ์ ์ค๋ช ๐
2. ์ ๊ทผ ๋ฐฉ์ ๐๏ธ
KEY WORD
: GREEDY ALGORITHM
Greedy Algorithm์ ๋งค ์ ํ์ ์๊ฐ๋ง๋ค ๋น์ ์ต์ ์ ์ ํ์ ํ๋ ๊ฒ์ด ์ ์ฒด ๋ฌธ์ ์์ ๋ดค์ ๋ ์ต์ ์ด๋ผ๋ ๊ฐ์ ์ ํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
ํด๋น ๋ฌธ์ ๋ -๋ฅผ ๋ง๋ ์๊ฐ๋ถํฐ ๋ค์๋ ๋ฌด์กฐ๊ฑด ๊ดํธ๋ฅผ ํ์ฉํด ๋ชจ๋ ๊ฐ์ -๋ก ๋ง๋ค์ด๋ฒ๋ฆฌ๋ฉด ๋๋ค. ์ต์ด -๋ฅผ ๋ง๋ ํ ๋ค์ ๊ณ์ฐ์ +๊ฐ ์ค๋ -๊ฐ ์ค๋ ์ ์ ํ ๊ดํธ๋ง ์น๋ฉด ๋ชจ๋ ๊ฐ์ -๋ก ๋ง๋ค ์ ์๋ค. ์๋ฅผ ๋ค์ด
25 + 32 - 26 - 27 + 28 - 29 + 30 - 31
25 + 32 - 26 - (27 + 28) - (29 + 30) - 31
์ฒ๋ผ ๋ง์ด๋ค.
3. ์ฝ๋ ์๊ฐ ๐
(0) ์ฌ์ ์ง์
๋ฌธ์ ์ ์
๋ ฅ์ด String์ผ๋ก ๋ญ๋ฑ๊ทธ๋ ค ์ฃผ์ด์ง๊ธฐ ๋๋ฌธ์ ๋ฌธ์์ด ์๋ฅด๊ธฐ์ ์๋ฌ์ด ๋์์ด์ผ ํ๋ค.
๋๋ StringTokenizer๋ฅผ ํ์ฉํ๋ค.
StringTokenizer st = new StringTokenizer("๋ฌธ์์ด", "๋ฌธ์์ด ์๋ฅด๋ ๊ธฐ์ค์ด ๋๋ ๋ฌธ์", ํด๋น ๋ฌธ์๋ฅผ ํฌํจํ ๊ฒ์ธ์ง delim);
์ฌ๊ธฐ์ ๋๋ฒ์งธ ์ธ์์๋ ,
๋ฅผ ํตํด ๊ธฐ์ค ๋ฌธ์๋ฅผ ์ฌ๋ฌ๊ฐ ์ค์ ํ ์์๊ณ , 3๋ฒ์งธ ์ธ์๋ฅผ true
๋ก ์ฃผ๋ฉด ์๋ฅด๋ ๊ธฐ์ค์ด ๋๋ ๋ฌธ์๋ ๋ฐ์ ์ ์๋ค. ์๋ฅผ ๋ค์ด
input: "55-50+40";
StringTokenizer st = new StringTokenizer(br.readLine(), "+,-", true);
while(st.hasMoreTokens()){
System.out.println(st.nexToken());
}
/* ์ถ๋ ฅ
55
-
55
+
40
*/
์ด๋ ๊ฒ ์จ๋ค. ์ด๋ฅผ ๋ฌธ์ ์ ํ์ฉํ์ฌ -๊ฐ ์จ ์ดํ๋ก ๋ชจ๋ ๊ฐ์ ๋นผ๋ฉด ๋๋ค.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st= new StringTokenizer(br.readLine(), "+,-" , true);
int acc = 0;
boolean isMinus = false;
while (st.hasMoreTokens()){
String now = st.nextToken();
if(!now.equals("+") && !now.equals("-")){
if(isMinus) acc -= Math.abs(Integer.parseInt(now));
else acc += Integer.parseInt(now);
}
if(now.equals("-")) isMinus = true;
}
System.out.println(acc);
}
}
4. ๋ฐฐ์ด ๊ฒ๋ค ๐ฏ
StringTokenizer๋ฅผ ๊ฐ๋ง์ ์ ๋๋ก ๋ค๋ค๋ณธ ๊ฑฐ ๊ฐ๋ค. ๋๋ถ์ StringTokenizer์ delim ๋ณต์ ๋ฑ๋ก๊ณผ delim ํฌํจ ์ฌ๋ถ์ ๋ํ ๋ณต์ต์ ํ ๊ฒ ๊ฐ๋ค.