-
[Algo Rhythm๐บ๐] ํ๋ก๊ทธ๋๋จธ์ค ๊ณ ๋์ kit ์ ํ๋ฒํธ ๋ชฉ๋กAlgo Rhythm๐บ๐/Programmers 2020. 7. 10. 19:09
๐ ๋ฌธ์ ์ค๋ช
์ ํ๋ฒํธ๋ถ์ ์ ํ ์ ํ๋ฒํธ ์ค, ํ ๋ฒํธ๊ฐ ๋ค๋ฅธ ๋ฒํธ์ ์ ๋์ด์ธ ๊ฒฝ์ฐ๊ฐ ์๋์ง ํ์ธํ๋ ค ํฉ๋๋ค.
์ ํ๋ฒํธ๊ฐ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ, ๊ตฌ์กฐ๋ ์ ํ๋ฒํธ๋ ์์์ด์ ์ ํ๋ฒํธ์ ์ ๋์ฌ์ ๋๋ค.
-
๊ตฌ์กฐ๋ : 119
-
๋ฐ์ค์ : 97 674 223
-
์ง์์ : 11 9552 4421
์ ํ๋ฒํธ๋ถ์ ์ ํ ์ ํ๋ฒํธ๋ฅผ ๋ด์ ๋ฐฐ์ด phone_book ์ด solution ํจ์์ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ด๋ค ๋ฒํธ๊ฐ ๋ค๋ฅธ ๋ฒํธ์ ์ ๋์ด์ธ ๊ฒฝ์ฐ๊ฐ ์์ผ๋ฉด false๋ฅผ ๊ทธ๋ ์ง ์์ผ๋ฉด true๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
-
phone_book์ ๊ธธ์ด๋ 1 ์ด์ 1,000,000 ์ดํ์ ๋๋ค.
-
๊ฐ ์ ํ๋ฒํธ์ ๊ธธ์ด๋ 1 ์ด์ 20 ์ดํ์ ๋๋ค.
๐ฏ ์ด๋ป๊ฒ ํ์๋
์ฒซ๋ฒ์งธ ๋ฐฉ๋ฒ (์์ ํ์)
class Solution { public boolean solution(String[] phone_book) { boolean answer = true; for(int i = 0; i < phone_book.length; i++) { for(int j = 0 ; j < phone_book.length; j++) { if(i == j) continue; if(phone_book[i].startsWith(phone_book[j])) { answer = false; break; } } } return answer; } }
๋๋ฒ์งธ ๋ฐฉ๋ฒ (ํด์)
import java.util.HashMap; import java.util.ArrayList; class Solution { public boolean solution(String[] phone_book) { boolean answer = true; // <K, V> -> <first letter, phone #s> HashMap<Integer, ArrayList<String>> firstLetterNPhoneNums = new HashMap<Integer, ArrayList<String>>(); for(String phoneNum : phone_book) { int firstLetter = Integer.parseInt(String.valueOf(phoneNum.charAt(0))); if(firstLetterNPhoneNums.containsKey(firstLetter)) { boolean isPrefix = false; ArrayList<String> matchingPhoneNums = firstLetterNPhoneNums.get(firstLetter); for(String matchingPhoneNum : matchingPhoneNums) { if(matchingPhoneNum.startsWith(phoneNum) || phoneNum.startsWith(matchingPhoneNum)) { isPrefix = true; break; } } // renew HashMap matchingPhoneNums.add(phoneNum); firstLetterNPhoneNums.put(firstLetter, matchingPhoneNums); if(isPrefix) { answer = false; break; } } else { ArrayList<String> list = new ArrayList<>(); list.add(phoneNum); firstLetterNPhoneNums.put(firstLetter, list); } } return answer; } }
๐ง ์ ์ ๋ ๊ฒ ํ์๋
์ฒซ๋ฒ์งธ ๋ฐฉ๋ฒ (์์ ํ์)
์ฌ์ค ์ค๋ช ํ ๊ฒ ์๋ค. ๊ทธ๋ฅ ๋ฌด์ํ๊ฒ ํ๋์ฉ ์ญ ๋ณด๋ฉด์ ์ ์ฒด์์ ์์ ์ผ๋ก ์์ํ๋ ๋ฌธ์๊ฐ ์๋์ง ํ์ธํ๋ ์ฝ๋์ด๋ค.
๋๋ฒ์งธ ๋ฐฉ๋ฒ (ํด์)
๋ฒํธ์ ์ฒซ๊ธ์๊ฐ key, ๊ทธ ๋ฒํธ๋ก ์์ํ๋ ๋ฒํธ๋ค์ ๋ชจ์๋์ ArrayList๊ฐ value์ธ ํด์๋งต์ ์ฌ์ฉํ๋ค.
์ต์ ์ ๊ฒฝ์ฐ O(n^2)์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง ์๋ ์์ง๋ง ๊ทธ๊ฑด ์ต์ ์ด๊ณ ์ผ๋ฐ์ ์ผ๋ก๋ ๊ทธ๋ณด๋ค ํจ์ฌ ์ผ์ฐ ๋๋๋ค.
๐ ๋ฌด์์ ๋ฐฐ์ ๋
ํด์๋ ์ฐธ ์ ์ฉํ ๋๊ตฌ์ด๋ค.
'Algo Rhythm๐บ๐ > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
-