JavaRush /Java Blog /Random-KO /๊ด„ํ˜ธ ํผ์ฆ (๋ ˆ๋ฒจ 3, ๊ฐ•์˜ 4)
Anatoliy
๋ ˆ๋ฒจ 17

๊ด„ํ˜ธ ํผ์ฆ (๋ ˆ๋ฒจ 3, ๊ฐ•์˜ 4)

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
๋งŽ์€ JavaRush ์ƒ๋„๋“ค ์‚ฌ์ด์— ๋‹ค์–‘ํ•œ ๊ฐ์ •์„ ๋ถˆ๋Ÿฌ์ผ์œผํ‚จ ๊ทธ๋Ÿฌํ•œ ์ž‘์—…์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. 9์›”์— ๊ฐ•์ขŒ๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด์„œ ๊ณผ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ณต์‹ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 1+2*3+4*5+6*7+8*9+10์ด๋ผ๋Š” ์ˆ˜์‹์— ๊ด„ํ˜ธ ๋‘ ์Œ์„ ๋„ฃ์–ด์„œ ํ•ด๋‹น ๊ฐ’์ด ํ‘œํ˜„์‹์€ 537๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๊ด„ํ˜ธํผ์ฆ(3๊ธ‰, 4๊ฐ•) - 1
์ด์ œ ์†”๋ฃจ์…˜์œผ๋กœ ๋Œ์•„์™€์„œ ๋ฌธ๊ตฌ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ’์ด 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() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
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๋ฒˆ์งธ๋ถ€ํ„ฐ ์ค„ ๋๊นŒ์ง€์˜ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
๊ด„ํ˜ธํผ์ฆ(3๊ธ‰, 4๊ฐ•) - 2
๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‹ซ๋Š” ๊ด„ํ˜ธ๋Š” {1,3,5,7,9,11,13,15,17,20} ์œ„์น˜์— ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ๋‘ ์ˆซ์ž๋Š” ๋ผ์ฆˆ๋ฒ ๋ฆฌ ์ „์ฒด๋ฅผ ๋ง์น˜๊ณ  ๋‹ค๋ฅธ ๋ชจ๋“  ์œ„์น˜๋Š” ์„œ๋กœ 2๋งŒํผ, 17๊ณผ 20์€ 3๋งŒํผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹จ์ˆœํžˆ ๋‹ซ๋Š” ๊ด„ํ˜ธ์˜ ์œ„์น˜ ๋ฒˆํ˜ธ๋ฅผ ํฌํ•จํ•˜๋Š” ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ  ๋‹ค์Œ ๋‹จ๊ณ„๋งˆ๋‹ค ๊ทธ ๊ฐ’์„ 2์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์œ„์น˜ ๊ฐ’์„ ๋ฐฐ์—ด์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
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
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION