๋ง์ JavaRush ์๋๋ค ์ฌ์ด์ ๋ค์ํ ๊ฐ์ ์ ๋ถ๋ฌ์ผ์ผํจ ๊ทธ๋ฌํ ์์
์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค. 9์์ ๊ฐ์ข๋ฅผ ์์ํ๋ฉด์ ๊ณผ์ ๋ ๋ค์๊ณผ ๊ฐ์ด ๊ณต์ํ๋์์ต๋๋ค. 1+2*3+4*5+6*7+8*9+10์ด๋ผ๋ ์์์ ๊ดํธ ๋ ์์ ๋ฃ์ด์ ํด๋น ๊ฐ์ด ํํ์์ 537๊ณผ ๊ฐ์ต๋๋ค.
์ด์ ์๋ฃจ์
์ผ๋ก ๋์์์ ๋ฌธ๊ตฌ๊ฐ ๋ณ๊ฒฝ๋์์์ ๋ฐ๊ฒฌํ์ต๋๋ค. ๊ฐ์ด 382๊ฐ ๋๋๋ก ํํ์ 2*3+4*5+6*7์ ๋ ์์ ๊ดํธ๋ฅผ ๋ฐฐ์นํด์ผ ํฉ๋๋ค. ๋ฌผ๋ก ์๋ก์ด ์กฐ๊ฑด์ ์ด์ ์กฐ๊ฑด๋ณด๋ค ๋ ๊ฐ๋จํฉ๋๋ค. ๊ฐ๋ฅํ ์ต์
์ ์๊ฐ ๋๋ต 10๋ฐฐ ์ ๋ ๊ฐ์ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋จธ์ง 85๊ฐ๋ ์๋ ๊ฒ์์ ํ๋ ์๊ฐ์ ์๋นํ๊ธฐ์ ์ถฉ๋ถํฉ๋๋ค. ๋ถ๋ช
ํ ์ด ์์
์ Java ํ๋ก๊ทธ๋๋ฐ๊ณผ ์ง์ ์ ์ธ ๊ด๋ จ์ด ์์ต๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํด๊ฒฐํ์ง ๋ชปํ์ต๋๋ค. ์ด๋ฌํ ๋ฌธ์ ์๋ ์ถ๋ก ์ด๋ ์ซ์์ ์์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ํ ๋ถ์์ ์๋ฃจ์
์ด ์์ผ๋ฉฐ ๋ฌด์ฐจ๋ณ ๋์
, ์ฆ ๊ฐ๋ฅํ ๋ชจ๋ ์ต์
์ ๋ํ ๋ฌด๋๋ํ ๊ฒ์๋ง ์์ต๋๋ค. ๋ฐ๋ฉด์ ์ด๋ฌํ ์ ํ์ ๋ฌธ์ ๊ฐ ํ๋ก๊ทธ๋๋ฐ์ ๋์์ผ๋ก ํด๊ฒฐ๋๋ค๋ ๊ฒ์ ๊ทธ๋ค์ง ๋ถ๋ช
ํ์ง ์์ต๋๋ค. ๊ทธ๊ฒ์ด ๋ด๊ฐ ๋์์จ ์ด์ ์ด๋ค. ๋ฐฉ๊ธ IDE์ ์ต์ํด์ก๊ณ ๋ ๋ฒจ 8์ ์ฝ์ค ๋ฌธ์ ๊ฐ ๋ง์์ ์ฌ๋ก ์ก์๊ณ ๊ทธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ํ๋ฃจ๋ ์ดํ ์ ๋
์ ๋ณด๋ด๋ ๊ฒ๋ ๊ด์ฐฎ์ต๋๋ค. ๋ค์์ Java๋ฅผ ์ฌ์ฉํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์
๋๋ค. ๋๋ ์์ ์ ๊ธฐ์ด๋ก ์ด์ ์กฐ๊ฑด์ ์ฌ์ฉํ์ต๋๋ค. ์ฐ์ , ๋ฌธ์์ด๋ก ์์ฑ๋ ํํ์์ ๊ฐ์ ๊ณ์ฐํ๋ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค. ํ์ค Java ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์๋ ์ด๋ฌํ ๋ฉ์๋๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ๋๋ ์ด๊ฒ์ ๊ฒ์ํ์ต๋๋ค: http://www.cyberforum.ru/java-j2se/thread283139.html ์ ์ฐ๋ฆฌ ๋ชฉ์ ์ ๋งค์ฐ ์ ํฉํฉ๋๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ ์ญํด๋๋ ํ๊ธฐ๋ฒ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ 4๊ฐ์ ์ฐ์ ์ฐ์ฐ๊ณผ ๊ดํธ๋ฅผ ํฌํจํ๋ ์ ํจํ ๋ฌธ์์ด์ ๋ํด ์๋ํฉ๋๋ค. PPN ํด๋์ค๊ฐ ํฌํจ๋ ์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ณ ๋งํฌ์ ์ฝ๋๋ฅผ ๋ณต์ฌํ์ฌ ํ์ผ์ ๋ถ์ฌ๋ฃ์ต๋๋ค. ์ด ๋ฌธ์ ๋ PPN ํด๋์ค์ main() ๋ฉ์๋์์ ํด๊ฒฐ๋ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ํ์ํ์ง ์์ต๋๋ค. Java ์ด๋ฐ์ฌ๋ก๊ธฐ๋ ๋ฌธ์ ๋ฅผ ์์ ํ์ ์์
์ผ๋ก ๋๋๋ ๋ฐ ๊ธฐ๋ฐ์ ๋๊ณ ์์ผ๋ฉฐ, ๊ฐ ํ์ ์์
์ ์์ฒด ํด๋์ค์ ๋ฉ์๋๋ก ๊ตฌํ๋ฉ๋๋ค. ์ข์ ์ ๊ทผ ๋ฐฉ์์ ๋ณ๋์ ํ์ผ์ ์ ์ฅ๋ ๋ค๋ฅธ ํด๋์ค์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์
๋๋ค. ๋ฐ๋ผ์ ๋๊ดํธ ์ด๊ฑฐ ์๊ณ ๋ฆฌ์ฆ์ ์์ฑํ ๋ค๋ฅธ ํด๋์ค๋ฅผ ๋ง๋ญ๋๋ค. ๋ฌธ์์ด ๊ฐ์ ๊ณ์ฐํ๋ ค๋ฉด PPN ํด๋์ค์ eval() ๋ฉ์๋๋ฅผ ํธ์ถํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ๋ซ๋ ๊ดํธ๋ {1,3,5,7,9,11,13,15,17,20} ์์น์ ๋ฐฐ์นํ ์ ์์ต๋๋ค. ๋ง์ง๋ง ๋ ์ซ์๋ ๋ผ์ฆ๋ฒ ๋ฆฌ ์ ์ฒด๋ฅผ ๋ง์น๊ณ ๋ค๋ฅธ ๋ชจ๋ ์์น๋ ์๋ก 2๋งํผ, 17๊ณผ 20์ 3๋งํผ ๋ค๋ฆ
๋๋ค. ๋ฐ๋ผ์ ๋จ์ํ ๋ซ๋ ๊ดํธ์ ์์น ๋ฒํธ๋ฅผ ํฌํจํ๋ ๋ณ์๋ฅผ ์ ์ธํ๊ณ ๋ค์ ๋จ๊ณ๋ง๋ค ๊ทธ ๊ฐ์ 2์ฉ ์ฆ๊ฐ์ํค๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์์น ๊ฐ์ ๋ฐฐ์ด์ ์ ์ฅํฉ๋๋ค.
System.out.println(PPN.eval(โ2*3+4โ));
๊ทธ ์ฏค
int result = PPN.eval(s2);
1+2*3+4*5+6*7+8*9+10 ์ค์ ์์ธํ ์ดํด๋ณด๊ณ ์ฌ๋ ๊ดํธ๋ฅผ ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋ฃ์ ์ ์๋์ง ์๋ฌธํด ๋ด
์๋ค. 10๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋ฐฐ์นํ ์ ์์ต๋๋ค. 0๋ถํฐ ์์ํ์ฌ ๋ฌธ์์ด ๋ฌธ์์ ๋ฒํธ๋ฅผ ๋งค๊ธฐ๋ฉด ์ฌ๋ ๊ดํธ๋ฅผ {0,2,4,6,8,10,12,14,16,18} ์์น์ ๋ฐฐ์นํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, 6๋ฒ์งธ ์์น์ ๊ดํธ๋ฅผ ๋ฐฐ์นํ๋ค๋ ๊ฒ์ 0๋ถํฐ 5๊น์ง์ ๋ชจ๋ ๋ฌธ์๋ฅผ ๊ฐ์ ธ์์ ๊ดํธ๋ฅผ ๋ฃ์ ๋ค์ 6๋ฒ์งธ๋ถํฐ ์ค ๋๊น์ง์ ๋ชจ๋ ๋ฌธ์๋ฅผ ๊ฐ์ ธ์์ผ ํจ์ ์๋ฏธํฉ๋๋ค.
int[] left = {0,2,4,6,8,10,12,14,16,18};
int[] right = {1,3,5,7,9,11,13,15,17,20};
๊ทธ๋ฆฌ๊ณ ์ต์
์ด๊ฑฐ๋ฅผ ๋ด๋นํ๋ ๋ฃจํ๋ฅผ ๋ฐ๋ณตํ ๋๋ง๋ค ์ธ๋ฑ์ค ๋ณ์๋ฅผ 1์ฉ ์ฆ๊ฐ์ํต๋๋ค. ์ ์ฒด์ ์ผ๋ก ๋ ๊ฐ์ ์ฌ๋ ๊ดํธ์ ๋ ๊ฐ์ ๋ซ๋ ๊ดํธ๊ฐ ๊ฐ๊ฐ ํ์ํ๋ฉฐ 4๊ฐ์ ์ธ๋ฑ์ค ๋ณ์๊ฐ ํ์ํฉ๋๋ค.
int indLeft1, indLeft2, indRight1, indRight2;
ํํ์์ ๊ดํธ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋ฐฐ์นํ ์ ์์ต๋๋ค.
( ) ( )
( ( ) )
๊ฐ ๋ฐฉ๋ฒ์ ๋ํด ์์ ๋ง์ ์๊ณ ๋ฆฌ์ฆ์ ์์ฑํด์ผ ํฉ๋๋ค. ๋๊ดํธ๋ฅผ ์ ๋ ฌํ๋ ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ๋ํ ์๊ณ ๋ฆฌ์ฆ์ ๊ณ ๋ คํ์ธ์. ์ต์
์ ์ค์ ์ด๊ฑฐ๋ ์ค์ฒฉ๋ for ๋ฃจํ๋ก ํ์๋ฉ๋๋ค.
for (int indLeft1=0;indLeft1<10;indLeft1++)
for(int indRight1=indLeft1+1;indRight1<10;indRight1++)
for (int indLeft2=indRight1+1;indLeft2<10;indLeft2++)
for (int indRight2=indLeft2+1;indRight2<10;indRight2++)
ํ๋ก๊ทธ๋จ ์์ ๋ถ๋ถ์์ ๊ดํธ ์์ด ์๋ ๋ฌธ์์ด๋ก ๋ฌธ์์ด ๋ณ์๋ฅผ ์ด๊ธฐํํฉ๋๋ค.
String s = "1+2*3+4*5+6*7+8*9+10";
๋ด๋ถ ๋ฃจํ์ ๋ณธ๋ฌธ์์ ๋๊ดํธ๋ก ํ ์ค์ ๋ง๋ญ๋๋ค.
String s2 = s.substring(0, left[indLeft1]) + "(" +
s.substring(left[indLeft1], right[indRight1]) + ")" +
s.substring(right[indRight1],left[indLeft2]) + "(" +
s.substring(left[indLeft2], right[indRight2]) + ")" +
s.substring(right[indRight2], s.length());
String ํด๋์ค์ substring() ๋ฉ์๋์ ํน์ฑ์ ์ฃผ์ํ์ธ์. ํ์ ๋ฌธ์์ด์ด ์ ํ๋ฉ๋๋ค. ์ฒซ ๋ฒ์งธ ๋ฌธ์์ ์๋ ์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ณ์์ ๊ฐ๊ณ , ๋ง์ง๋ง ๋ฌธ์์ ์๋ ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์์์ 1์ ๋บ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค . https://docs.oracle.com/javase/10/docs/api/java/lang/String.html#substring(int,int) ์ ์ฐธ์กฐํ์ธ์ . ์คํด๋ฅผ ์ค์ด๊ธฐ ์ํ ์์ ๋ ์์ต๋๋ค. ๋๊ดํธ๋ก ๋ฌธ์์ด์ ๋ง๋ ํ ๊ฐ์ ๊ณ์ฐํ๊ณ ํ์ํ ๊ฐ๊ณผ ๋น๊ตํฉ๋๋ค.
int result = PPN.eval(s2);
if (result == 537)
System.out.println(s2);
์ค์ฒฉ๋ ๊ดํธ ๋ฐฐ์ด์ ์ํ ๋ธ๋ก๋ ๋น์ทํ ๋ฐฉ์์ผ๋ก ์์ฑ๋ฉ๋๋ค. ๋ด๊ฐ ์ฃผ๋ชฉํ๊ณ ์ถ์ ์ ์ผํ ์ ์ ๊ดํธ๊ฐ ์ค์ฒฉ๋ ๋ ์ฌ๋ ๊ดํธ์ ๋ซ๋ ๊ดํธ๊ฐ ๊ฐ์ ์์น์ ์์ ์ ์๋ค๋ ๊ฒ์
๋๋ค. ์๋ฅผ ๋ค์ด
1+((2*3+4*5+6)*7+8*9+10)
๋๋
(1+2*(3+4*5+6*7+8))*9+10
์ฌ์ค ๊ทธ๊ฒ ์ ๋ถ์
๋๋ค. ์คํ ํ, ์ฌ๋ฐ๋ฅด๊ฒ ์์ฑ๋ ํ๋ก๊ทธ๋จ์ ๋ค์๊ณผ ๊ฐ์ ๋จ์ผ ๋ต์ ์์ฑํฉ๋๋ค: 1+2*(3+4*(5+6*7)+8*9)+10
GO TO FULL VERSION