Bibi's DevLog ๐ค๐
[Java] (์์ง ํธ๋ ์ค..) ๋ฐฑ์ค 8958๋ฒ ๋ฌธ์ - split(), join(), ๋ฌธ์์ด ๋น๊ต equals() ๋ณธ๋ฌธ
[Java] (์์ง ํธ๋ ์ค..) ๋ฐฑ์ค 8958๋ฒ ๋ฌธ์ - split(), join(), ๋ฌธ์์ด ๋น๊ต equals()
๋น๋น bibi 2020. 11. 6. 18:27๋ฌธ์ ์ถ์ฒ : ๋ฐฑ์ค ์จ๋ผ์ธ ์ ์ง
www.acmicpc.net/problem/8958๊ฐ์ฌํฉ๋๋ค.
๋ฌธ์
"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๊ฐ ๋๋ค.