[programmers] ํํ - Java
ํํ์ ํํํ๋ ๋ฌธ์์ด s๊ฐ ์ฃผ์ด์ง ๋, s๋ฅผ ๋ฐฐ์ด๋ก ๋ณํํ๋ ๋ฌธ์ ์
๋๋ค. ์ฃผ์ด์ง ๋ฌธ์์ด์์ {{, }}๋ฅผ ์ ๊ฑฐํ๊ณ },{๋ฅผ ๊ตฌ๋ถ์๋ก ๋ถํ ํ ํ, ๋ถํ ํ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํฉ๋๋ค. ๊ทธ ํ ๊ฐ ๋ฌธ์์ด์ ,๋ฅผ ๊ตฌ๋ถ์๋ก ๋ถํ ํ์ฌ ์ ์๋ฅผ ์ถ์ถํ๊ณ , ํ ๋ฒ๋ ๋ฑ์ฅํ์ง ์์ ์๋ฅผ ๋ฆฌ์คํธ์ ์ถ๊ฐํฉ๋๋ค.
Mar 17, 2024
ํํ
๋ฌธ์ ์ค๋ช
์
์์๋ ์๋์ ์์์๋ ์ด๊ฑฐ ๋๋ ์ด๋ค ์์๋ฅผ ๋ฐ๋ฅด๋ ์์๋ค์ ๋ชจ์์ ํํ(tuple)์ด๋ผ๊ณ ํฉ๋๋ค. n๊ฐ์ ์์๋ฅผ ๊ฐ์ง ํํ์ n-ํํ(n-tuple)์ด๋ผ๊ณ ํ๋ฉฐ, ๋ค์๊ณผ ๊ฐ์ด ํํํ ์ ์์ต๋๋ค.
- (a1, a2, a3, ..., an)
ํํ์ ๋ค์๊ณผ ๊ฐ์ ์ฑ์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
- ์ค๋ณต๋ ์์๊ฐ ์์ ์ ์์ต๋๋ค. ex : (2, 3, 1, 2)
- ์์์ ์ ํด์ง ์์๊ฐ ์์ผ๋ฉฐ, ์์์ ์์๊ฐ ๋ค๋ฅด๋ฉด ์๋ก ๋ค๋ฅธ ํํ์ ๋๋ค. ex : (1, 2, 3) โ (1, 3, 2)
- ํํ์ ์์ ๊ฐ์๋ ์ ํํฉ๋๋ค.
์์์ ๊ฐ์๊ฐ n๊ฐ์ด๊ณ , ์ค๋ณต๋๋ ์์๊ฐ ์๋ ํํ
(a1, a2, a3, ..., an)
์ด ์ฃผ์ด์ง ๋(๋จ, a1, a2, ..., an์ ์์ฐ์), ์ด๋ ๋ค์๊ณผ ๊ฐ์ด ์งํฉ ๊ธฐํธ '{', '}'๋ฅผ ์ด์ฉํด ํํํ ์ ์์ต๋๋ค.- {{a1}, {a1, a2}, {a1, a2, a3}, {a1, a2, a3, a4}, ... {a1, a2, a3, a4, ..., an}}
์๋ฅผ ๋ค์ด ํํ์ด (2, 1, 3, 4)์ธ ๊ฒฝ์ฐ ์ด๋
- {{2}, {2, 1}, {2, 1, 3}, {2, 1, 3, 4}}
์ ๊ฐ์ด ํํํ ์ ์์ต๋๋ค. ์ด๋, ์งํฉ์ ์์์ ์์๊ฐ ๋ฐ๋์ด๋ ์๊ด์์ผ๋ฏ๋ก
- {{2}, {2, 1}, {2, 1, 3}, {2, 1, 3, 4}}
- {{2, 1, 3, 4}, {2}, {2, 1, 3}, {2, 1}}
- {{1, 2, 3}, {2, 1}, {1, 2, 4, 3}, {2}}
๋ ๋ชจ๋ ๊ฐ์ ํํ (2, 1, 3, 4)๋ฅผ ๋ํ๋
๋๋ค.
ํน์ ํํ์ ํํํ๋ ์งํฉ์ด ๋ด๊ธด ๋ฌธ์์ด s๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, s๊ฐ ํํํ๋ ํํ์ ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
[์ ํ์ฌํญ]
- s์ ๊ธธ์ด๋ 5 ์ด์ 1,000,000 ์ดํ์ ๋๋ค.
- s๋ ์ซ์์ '{', '}', ',' ๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ์ซ์๊ฐ 0์ผ๋ก ์์ํ๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค.
- s๋ ํญ์ ์ค๋ณต๋๋ ์์๊ฐ ์๋ ํํ์ ์ฌ๋ฐ๋ฅด๊ฒ ํํํ๊ณ ์์ต๋๋ค.
- s๊ฐ ํํํ๋ ํํ์ ์์๋ 1 ์ด์ 100,000 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- return ํ๋ ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ 1 ์ด์ 500 ์ดํ์ธ ๊ฒฝ์ฐ๋ง ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋๋ค.
[์ ์ถ๋ ฅ ์]
s | result |
"{{2},{2,1},{2,1,3},{2,1,3,4}}" | [2, 1, 3, 4] |
"{{1,2,3},{2,1},{1,2,4,3},{2}}" | [2, 1, 3, 4] |
"{{20,111},{111}}" | [111, 20] |
"{{123}}" | [123] |
"{{4,2,3},{3},{2,3,4,1},{2,3}}" | [3, 2, 4, 1] |
์ ์ถ๋ ฅ ์์ ๋ํ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
๋ฌธ์ ์์์ ๊ฐ์ต๋๋ค.
์ ์ถ๋ ฅ ์ #2
๋ฌธ์ ์์์ ๊ฐ์ต๋๋ค.
์ ์ถ๋ ฅ ์ #3
(111, 20)์ ์งํฉ ๊ธฐํธ๋ฅผ ์ด์ฉํด ํํํ๋ฉด {{111}, {111,20}}์ด ๋๋ฉฐ, ์ด๋ {{20,111},{111}}๊ณผ ๊ฐ์ต๋๋ค.
์ ์ถ๋ ฅ ์ #4
(123)์ ์งํฉ ๊ธฐํธ๋ฅผ ์ด์ฉํด ํํํ๋ฉด {{123}} ์
๋๋ค.
์ ์ถ๋ ฅ ์ #5
(3, 2, 4, 1)์ ์งํฉ ๊ธฐํธ๋ฅผ ์ด์ฉํด ํํํ๋ฉด {{3},{3,2},{3,2,4},{3,2,4,1}}์ด ๋๋ฉฐ, ์ด๋ {{4,2,3},{3},{2,3,4,1},{2,3}}๊ณผ ๊ฐ์ต๋๋ค.
solution.java
import java.util.*; class Solution { public ArrayList<Integer> solution(String s) { ArrayList<Integer> answer = new ArrayList<>(); s = s.substring(2, s.length() - 2); String[] sets = s.split("\\},\\{"); Arrays.sort(sets, Comparator.comparingInt(String::length)); for (String set : sets) { String[] elements = set.split(","); for (String element : elements) { int num = Integer.parseInt(element); if (!answer.contains(num)) answer.add(num); } } return answer; } }
ํต์ฌ ํค์๋
- ๋ฌธ์์ด์์ {{, }}๋ฅผ ์ ๊ฑฐํ ํ, },{๋ฅผ ๊ตฌ๋ถ์๋ก ๋ฌธ์์ด์ ๋ถํ ํ๋ค.
substring()
๊ณผsplit()
์ ํตํด ๋ฌธ์์ด์ ์ ๊ฑฐํ๊ณ ๋ถํ ํ ์ ์๋ค.
- ๋ถํ ํ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ค.
Arrays.sort()
,Comparator.comparingInt(String::length)
๋ฅผ ํตํด ์กฐ๊ฑด์ด ๋ถ์ ์ ๋ ฌ์ ์ํํ๋ค.
- ๊ฐ๊ฐ์ ๋ฌธ์์ด์ ,๋ฅผ ๊ตฌ๋ถ์๋ก ๋ถํ ํด์ ์ ์๋ฅผ ๊ตฌํ๋ค.
- ๋ง์ฝ ํ ๋ฒ๋ ๋ฑ์ฅํ์ง ์์ ์๋ผ๋ฉด ๋ฆฌ์คํธ์ ์ถ๊ฐํ๋ค.
๊ฒฐ๋ก !
ํด๋น ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ์ด๋ป๊ฒ ๋ฌธ์์ด์ ๋ถํ ํด์ ๊ธธ์ด ์์ผ๋ก ์ ๋ ฌํ ์ ์์์ง์ ๋ํด ๋ง์ด ๊ณ ๋ฏผํ๋๋ฐ, ์ด๋ฅผ
substring()
๊ณผ split()
, Arrays.sort()
, Comparator.comparingInt(String::length)
๋ฅผ ํตํด ํด๊ฒฐํ ์ ์์๋ค.Share article