CodingTest/Java
Lv.2 : ์์ถ
Soom_1n
2023. 11. 9. 09:37
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- ์์ถ ์๊ณ ๋ฆฌ์ฆ์ธ LZW๋ฅผ ๊ตฌํํ๋ ๋ฌธ์ ์ด๋ค.
- ์๊ณ ๋ฆฌ์ฆ ์ค๋ช ์ ๋ฐ๋ผ ๋ฌธ์์ด ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ ๋ฌธ์ ์ด๋ค.
- ์ํ๋ฒณ ๋๋ฌธ์๋ง ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ค.
๐ธ ๋ฌธ์ ํ์ด ๐ธ
- ์์ธ๋๋ ๋ฌธ์์ด๋ค์ ๊ทธ ๊ฐ์ ๋ฆฌ์คํธ์ ์ ์ฅํ๋ค.
- ์์ธ๋์ง ์๋ ๋ฌธ์์ด์ ์๋กญ๊ฒ ์ถ๊ฐํ๋ค.
- ๋ฆฌ์คํธ์ ๊ฐ์ ๋ฐํํ๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.util.Map;
import java.util.HashMap;
import java.util.List;
import java.util.ArrayList;
class Solution {
public int[] solution(String msg) {
// ์ฌ์ ์ด๊ธฐํ
Map<String, Integer> map = new HashMap<>();
for (int i = 0; i < 26; i++) {
map.put((char)('A' + i) + "", i + 1);
}
// ์ธ๋ฑ์ฑ
List<Integer> list = new ArrayList<>();
for (int i = 0; i < msg.length(); i++) {
int len = 1;
while (i + len <= msg.length() && map.containsKey(msg.substring(i, i + len))) {
len++;
}
list.add(map.get(msg.substring(i, i + len - 1)));
if (i + len <= msg.length())
map.put(msg.substring(i, i + len), map.size() + 1);
i += len - 2;
}
// ์ถ๋ ฅ
int[] answer = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
answer[i] = list.get(i);
}
return answer;
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ์ํ๋ฒณ ๋๋ฌธ์ 26๊ฐ๋ฅผ map์ ์ ์ฅํด๋๋ค.
- ์์ธ๋์ง ์์๋ ๊น์ง ๋ถ๋ถ ๋ฌธ์์ด์ ๋๋ ค๊ฐ๋ค.
- ๋ง์ง๋ง์ผ๋ก ์์ธ๋ ๊ฐ์ list์ ์ ์ฅํ๋ค.
- ์์ธ๋์ง ์์ ๋ถ๋ถ ๋ฌธ์์ด์ ์๋กญ๊ฒ ์์ธ์ ์ถ๊ฐํ๋ค.
- ์์ธ๋ ๊ฐ ์ดํ๋ก ๋ค์ ๋ถ๋ถ ๋ฌธ์์ด์ ๊ณ์ฐํ๋ค.
- list์ ์ ์ฅ๋ ๊ฐ๋ค์ ๋ฐํํ๋ค.
๐ธ end ๐ธ
- LZW๋ผ๋ ์์ถ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๋ ๋ฌธ์ ์ฌ์, ๋ฌธ์ ์ค๋ช
๋์ ๋ณด๊ณ ์ด๋ ต์ง ์์๊น ํ๋๋ฐ ์๊ฐ๋ณด๋จ ๊ฐ๋จํ๋ค.
- ์ต๋๊ธธ์ด ๋ฌธ์์ด์ ๊ตฌํ ๋, ๋ฌธ์์ด์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๊ฒฝ์ฐ๋ฅผ ์์ธ์ฒ๋ฆฌํ์ง ์์์ ๋๋ฒ๊น ์ด ํ์ํ๋ค.
- 2018 KAKAO RECRUITMENT์ 2๋ฒ ๋ฌธ์ ์ด๊ณ ์ ๋ต๋ฅ ์ 95.80%๋ก ์ฌ์ด ๋์ด๋์ธ ๊ฒ ๊ฐ๋ค.
- ๋ค์์ ๊ณต์ ํด์ค ๋ด์ฉ์ด๋ค.
GIF ํ์ผ ๋ฑ์์ ์ค์ ๋ก ์ฐ์ด๋ LZW ์๊ณ ๋ฆฌ์ฆ์ ์ค๋ช ํด์ฃผ๊ณ , ๊ตฌํํ๋ ๋ฌธ์ ์ ๋๋ค. ์ค์ ๋ก ์ฐ์ด๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํด๋ณด๋ ๊ฒ์ด ์ด๋ ์ จ๋์? ์์ถ์ด๋ผ๋ ๋ง๋ง์ผ๋ก ์ผํ ์ด๋ ค์ ๋ณด์ด์ง๋ง, ์ค๋ช ์ ๋์จ ์์ฌ์ฝ๋Pseudocode๋ฅผ ๊ทธ๋๋ก ๋ฐ๋ผ์ ๊ตฌํ๋ง ํ๋ฉด ๋๋ ๋ฌธ์ ๋ก, ๊ธฐ์ด์ ์ธ ๋ฌธ์์ด๊ณผ ๋ฐฐ์ด์ ๋ค๋ฃฐ ์ ์๋ค๋ฉด ํ ์ ์๋ ๋ฌธ์ ์ ๋๋ค.
์ด ๋ฌธ์ ์ ์ ๋ต๋ฅ ์ 95.80%์ ๋๋ค. ๊ฐ์ฅ ๋ง์ ์ง์์๊ฐ ์ ํ์ด์ฃผ์ จ์ต๋๋ค. ์ธ์ด๋ณ๋ก๋ Java ์ธ์ด ์ฌ์ฉ์๋ค์ด ์กฐ๊ธ ์ด๋ ค์ํ์ต๋๋ค.
728x90