Bibi's DevLog ๐Ÿค“๐ŸŽ

[Java] (์•„์ง ํ‘ธ๋Š” ์ค‘..) ๋ฐฑ์ค€ 8958๋ฒˆ ๋ฌธ์ œ - split(), join(), ๋ฌธ์ž์—ด ๋น„๊ต equals() ๋ณธ๋ฌธ

๐Ÿ–ฅ BE ๋ฐฑ์—”๋“œ/Java ์ž๋ฐ”

[Java] (์•„์ง ํ‘ธ๋Š” ์ค‘..) ๋ฐฑ์ค€ 8958๋ฒˆ ๋ฌธ์ œ - split(), join(), ๋ฌธ์ž์—ด ๋น„๊ต equals()

๋น„๋น„ bibi 2020. 11. 6. 18:27

๋ฌธ์ œ ์ถœ์ฒ˜ : ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ €์ง€

www.acmicpc.net/problem/8958๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

 

8958๋ฒˆ: OXํ€ด์ฆˆ

"OOXXOXXOOO"์™€ ๊ฐ™์€ OXํ€ด์ฆˆ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์žˆ๋‹ค. O๋Š” ๋ฌธ์ œ๋ฅผ ๋งž์€ ๊ฒƒ์ด๊ณ , X๋Š” ๋ฌธ์ œ๋ฅผ ํ‹€๋ฆฐ ๊ฒƒ์ด๋‹ค. ๋ฌธ์ œ๋ฅผ ๋งž์€ ๊ฒฝ์šฐ ๊ทธ ๋ฌธ์ œ์˜ ์ ์ˆ˜๋Š” ๊ทธ ๋ฌธ์ œ๊นŒ์ง€ ์—ฐ์†๋œ O์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 10๋ฒˆ ๋ฌธ์ œ์˜ ์ ์ˆ˜

www.acmicpc.net


๋ฌธ์ œ

"OOXXOXXOOO"์™€ ๊ฐ™์€ OXํ€ด์ฆˆ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์žˆ๋‹ค. O๋Š” ๋ฌธ์ œ๋ฅผ ๋งž์€ ๊ฒƒ์ด๊ณ , X๋Š” ๋ฌธ์ œ๋ฅผ ํ‹€๋ฆฐ ๊ฒƒ์ด๋‹ค. ๋ฌธ์ œ๋ฅผ ๋งž์€ ๊ฒฝ์šฐ ๊ทธ ๋ฌธ์ œ์˜ ์ ์ˆ˜๋Š” ๊ทธ ๋ฌธ์ œ๊นŒ์ง€ ์—ฐ์†๋œ O์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 10๋ฒˆ ๋ฌธ์ œ์˜ ์ ์ˆ˜๋Š” 3์ด ๋œ๋‹ค.

"OOXXOXXOOO"์˜ ์ ์ˆ˜๋Š” 1+2+0+0+1+0+0+1+2+3 = 10์ ์ด๋‹ค.

OXํ€ด์ฆˆ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ•œ ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , ๊ธธ์ด๊ฐ€ 0๋ณด๋‹ค ํฌ๊ณ  80๋ณด๋‹ค ์ž‘์€ ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ๋ฌธ์ž์—ด์€ O์™€ X๋งŒ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

์ถœ๋ ฅ

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค ์ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ 1

5
OOXXOXXOOO
OOXXOOXXOO 
OXOXOXOXOXOXOX 
OOOOOOOOOO 
OOOOXOOOOXOOOOX

์˜ˆ์ œ ์ถœ๋ ฅ 1

10 9 7 55 30

10
9 
7 
55
30

 


** ์•„์ง ๋‹ค ํ’€์ง€ ๋ชปํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค . ์ด ๊ธ€ ์•ˆ์—๋Š” ํ’€์ด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.**


์‚ฌ์‹ค ๊ทธ๋™์•ˆ ํ’€๋˜ ๋ฌธ์ œ๋“ค์— ๋น„ํ•ด ๋„ˆ๋ฌด ๋ณต์žกํ•˜๊ณ  ์–ด๋ ค์›Œ์„œใ… ใ… 
์šฐ์„  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค 1๊ฐœ๋งŒ ๋ฐ›์•„์„œ OX ์ฑ„์ ํ•ด ๋ณด๋Š” ๊ฑธ ๋จผ์ € ๋งŒ๋“ค์–ด ๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.
๊ทธ ๋‹ค์Œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค N๊ฐœ๋ฅผ ๋ฐ›์•„์„œ ์ฑ„์ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋ฐœ์ „์‹œ์ผœ์•ผ๊ฒ ๋‹ค.

(ํ˜„์žฌ ์ง„ํ–‰์ƒํ™ฉ)
OXOXXO.. ๋ฐฐ์—ด์„ ๋ฐ›์•„์„œ O = 1์ , X = 0 ์  ์œผ๋กœ ์ฑ„์ ํ•˜๋Š” ๊ฒƒ ๊นŒ์ง€๋Š” ์™„์„ฑ.
์—ฐ์†ํ•ด์„œ ๋งž์ท„์„ ๋•Œ ๋ณด๋„ˆ์Šค์ ์ˆ˜ ์ฃผ๋Š” ๋ถ€๋ถ„์„ ๊ตฌํ˜„์ค‘.


์ž๋ฐ” split()

jamesdreaming.tistory.com/84 ๋ฅผ ๋ณด๊ณ  ๊ณต๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ .split() ์™€ ๋น„์Šทํ•˜๋‹ค.
์–ด๋–ค ๋ฌธ์ž์—ด์„ ์†Œ๊ด„ํ˜ธ ๋‚ด์˜ "๋ฌธ์ž์—ดString"(๊ตฌ๋ถ„๋ฌธ์ž delimiter) ๋˜๋Š” "์ •๊ทœํ‘œํ˜„์‹regex"์„ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆ„์–ด,
๊ฐ๊ฐ์„ ์›์†Œ๋กœ ํ•˜๋Š” ๋ฐฐ์—ด๋กœ ๋งŒ๋“ ๋‹ค.
(๋ฐฐ์—ด๋กœ ๋งŒ๋“ค๊ณ  ๋‚˜๋ฉด ๊ตฌ๋ถ„๋ฌธ์ž๋Š” ์‚ฌ๋ผ์ง„๋‹ค)

๋ฌธ์ž์—ด.split("๊ตฌ๋ถ„๋ฌธ์ž");
( ๋ฌธ์ž์—ด์„ ์ชผ๊ฐœ์–ด ๋ฐฐ์—ด๋กœ ๋งŒ๋“ฆ )

↑์œ„์™€ ๊ฐ™์ด ๋ฌธ์ž์—ด ๊ธฐ์ค€์œผ๋กœ ์ชผ๊ฐœ์–ด ์ž๋™์œผ๋กœ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ์ค„ ์ˆ˜๋„ ์žˆ๊ณ ,
↓์•„๋ž˜์™€ ๊ฐ™์ด ๋ฌธ์ž์—ด ๊ธฐ์ค€์œผ๋กœ ์ชผ๊ฐœ๋”๋ผ๋„ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ์ •ํ•ด ์ค„ ์ˆ˜๋„ ์žˆ๋‹ค.

๋ฌธ์ž์—ด.split("๊ตฌ๋ถ„๋ฌธ์ž", n);
( ๋ฌธ์ž์—ด์„ ์ชผ๊ฐœ์–ด ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค๋˜, ์ตœ๋Œ€ ๊ธธ์ด๊ฐ€ n์ธ ๋ฐฐ์—ด๋กœ ๋งŒ๋“ฆ )
String phone = "010-1234-5678";
String[] phoneArr = phone.split("-");
-> phoneArr์˜ ๋ชจ์Šต์€ {"010", "1234", "5678"} ์ด ๋œ๋‹ค.

์ž๋ฐ” join()

zetawiki.com/wiki/%EC%9E%90%EB%B0%94_String.join() ์„ ์ฐธ๊ณ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.


join() ์€ split() ์™€ ๋ฐ˜๋Œ€ ๊ฐœ๋…์œผ๋กœ,
"๋ฐฐ์—ด"์„ ํ•ฉ์ณ์„œ or "๋ฌธ์ž๋“ค"์„ ์ด์–ด๋ถ™์—ฌ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ๋ฉ”์†Œ๋“œ์ด๋‹ค.

String.join("๊ตฌ๋ถ„๋ฌธ์ž", ๋ฐฐ์—ด);
๋˜๋Š”
String.join("๊ตฌ๋ถ„๋ฌธ์ž", "๋ฌธ์ž1", "๋ฌธ์ž2" ..);
String[] humans = {"Alice", "Bob", "Carol"};
String humansArr = String.join("-", humans);
-> humansArr์˜ ๋ชจ์Šต์€ "Alice-Bob-Carol" ์ด ๋œ๋‹ค.

์ž๋ฐ” ๋ฌธ์ž์—ด ๋น„๊ต equals();

coding-factory.tistory.com/536 ๋ฅผ ๋ณด๋ฉฐ ๊ณต๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ž๋ฐ”์—์„œ primitive type (int, boolean, double ๋“ฑ..) ์„ ๋น„๊ตํ•  ๋•Œ๋Š” == ๋ฅผ ์“ฐ์ง€๋งŒ
๋ฌธ์ž์—ดstring์„ ๋น„๊ตํ•  ๋•Œ๋Š” equals()๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

primitive type์€ ๊ธฐ๋ณธ๋ณ€์ˆ˜์ด๋ฏ€๋กœ ๊ฐ’์„ ์ฐธ์กฐํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ==๋กœ ๋น„๊ตํ•ด๋„ ๊ฐ’์„ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค.
ํ•˜์ง€๋งŒ ๋ฌธ์ž์—ด, ๊ฐ์ฒด, ํด๋ž˜์Šค์™€ ๊ฐ™์€ ์ฐธ์กฐ๋ณ€์ˆ˜๋Š” ์ฃผ์†Œ๊ฐ’์„ ์ฐธ์กฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ==๋กœ ๋น„๊ตํ•ด๋„
๋ณ€์ˆ˜์˜ ์œ„์น˜๋ฅผ ๋น„๊ตํ•  ๋ฟ ๊ทธ ๊ฐ’์„ ๋น„๊ตํ•  ์ˆœ ์—†๋‹ค.
๋”ฐ๋ผ์„œ ๋ฌธ์ž์—ด, ๊ฐ์ฒด, ํด๋ž˜์Šค์™€ ๊ฐ™์€ ์ฐธ์กฐ๋ณ€์ˆ˜๋Š” == ๊ฐ€ ์•„๋‹Œ .equals() ๋ฅผ ํ†ตํ•ด ๋น„๊ตํ•ด์•ผ ํ•œ๋‹ค.

๊ฒฐ๋ก  = ์ž๋ฐ”์—์„œ ๋ฌธ์ž์—ด ๋น„๊ตํ•  ๋•Œ๋Š” == ๊ฐ€ ์•„๋‹Œ .equals() ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

๋ฌธ์ž์—ด1๊ณผ ๋ฌธ์ž์—ด2 ๋น„๊ต
: ๋ฌธ์ž์—ด1.equals(๋ฌธ์ž์—ด2)
String str1 = "๊ฐ€๋‚˜๋‹ค";
String str2 = "๊ฐ€๋‚˜๋‹ค";
String str3 = "ํƒ€ํŒŒํ•˜";
str1.equals(str2); ์˜ ๊ฒฐ๊ณผ๋Š” true
str2.equals(str3); ์˜ ๊ฒฐ๊ณผ๋Š” false๊ฐ€ ๋œ๋‹ค.