[νλ‘κ·Έλλ¨Έμ€] Lv1. κ°μ₯ κ°κΉμ΄ κ°μ κΈμ
λ¬Έμ μ€λͺ
λ¬Έμμ΄ sκ° μ£Όμ΄μ‘μ λ, sμ κ° μμΉλ§λ€ μμ λ³΄λ€ μμ λμμΌλ©΄μ, μμ κ³Ό κ°μ₯ κ°κΉμ΄ κ³³μ μλ κ°μ κΈμκ° μ΄λ μλμ§ μκ³ μΆμ΅λλ€.
μλ₯Ό λ€μ΄, s="banana"λΌκ³ ν λ, κ° κΈμλ€μ μΌμͺ½λΆν° μ€λ₯Έμͺ½μΌλ‘ μ½μ΄ λκ°λ©΄μ λ€μκ³Ό κ°μ΄ μ§νν μ μμ΅λλ€.
- bλ μ²μ λμκΈ° λλ¬Έμ μμ μ μμ κ°μ κΈμκ° μμ΅λλ€. μ΄λ -1λ‘ ννν©λλ€.
- aλ μ²μ λμκΈ° λλ¬Έμ μμ μ μμ κ°μ κΈμκ° μμ΅λλ€. μ΄λ -1λ‘ ννν©λλ€.
- nμ μ²μ λμκΈ° λλ¬Έμ μμ μ μμ κ°μ κΈμκ° μμ΅λλ€. μ΄λ -1λ‘ ννν©λλ€.
- aλ μμ λ³΄λ€ λ μΉΈ μμ aκ° μμ΅λλ€. μ΄λ 2λ‘ ννν©λλ€.
- nλ μμ λ³΄λ€ λ μΉΈ μμ nμ΄ μμ΅λλ€. μ΄λ 2λ‘ ννν©λλ€.
- aλ μμ λ³΄λ€ λ μΉΈ, λ€ μΉΈ μμ aκ° μμ΅λλ€. μ΄ μ€ κ°κΉμ΄ κ²μ λ μΉΈ μμ΄κ³ , μ΄λ 2λ‘ ννν©λλ€.
λ°λΌμ μ΅μ’ κ²°κ³Όλ¬Όμ [-1, -1, -1, 2, 2, 2]κ° λ©λλ€.
λ¬Έμμ΄ sμ΄ μ£Όμ΄μ§ λ, μμ κ°μ΄ μ μλ μ°μ°μ μννλ ν¨μ solutionμ μμ±ν΄μ£ΌμΈμ.
μ νμ¬ν
- 1 ≤ sμ κΈΈμ΄ ≤ 10,000
- sμ μμ΄ μλ¬Έμλ‘λ§ μ΄λ£¨μ΄μ Έ μμ΅λλ€.
μ μΆλ ₯ μ
"banana" | [-1, -1, -1, 2, 2, 2] |
"foobar" | [-1, -1, 1, -1, -1, -1] |
μ μΆλ ₯ μ μ€λͺ
μ
μΆλ ₯ μ #1
μ§λ¬Έκ³Ό κ°μ΅λλ€.
μ
μΆλ ₯ μ #2
μ€λͺ
μλ΅
λμ νμ΄
public int[] solution(String s) {
int[] answer = new int[s.length()];
HashMap<String, Integer> map = new HashMap<>();
String[] split = s.split("");
for (int i = 0; i< split.length; i++)
{
Integer integer = map.get(split[i]);
if (integer == null) {
answer[i] = -1;
}else {
answer[i] = i - integer;
}
map.put(split[i], i);
}
return answer;
}
λλ μ°μ HashMapμλ€κ° key κ°μΌλ‘ μ£Όμ΄μ§ λ¬Έμμ΄μ μͺΌκ° κ°μ λ΄κ³ , κ·Έ λ¬Έμμ΄μ μμΉλ₯Ό λ΄μμ λ¬Έμ λ₯Ό ν΄κ²°νλ€.
μ°μ λ¬Έμμ΄μ μͺΌκ°μ£Όκ³ , λ§μ½ mapμμ key λ‘ κΊΌλμ λ integer κ° nullμ΄λ©΄ 첫λ²μ§Έ κΈμλΌλ λ»μ΄κΈ° λλ¬Έμ answer λ°°μ΄μλ -1μ λ£μ΄μ£Όκ³ ,
λ§μ½ null μ΄ μλλΌλ©΄ 첫λ²μ§Έ κΈμκ° μλλΌλ λ»μ΄κΈ° λλ¬Έμ answerμ μͺΌκ° λ¬Έμμ΄μ μμΉμΈ iμ mapμμ κΊΌλΈ μμΉ iλ₯Ό λΊ κ°μ λ£μ΄μ€¬λ€.
κ·Έλ¦¬κ³ λ§μ½ bananaμ²λΌ aκ° λλ²μ§Έ, 4λ²μ§Έμ μμΉνκ³ μλ κ²½μ°λ₯Ό μν΄μ mapμλ λ§μ§λ§ κ°μ λ£μ΄μ£Όλλ‘ νλ€.
λ€λ₯Έ μ¬λ νμ΄
public int[] otherSolution(String s)
{
int[] answer = new int[s.length()];
HashMap<Character, Integer> map = new HashMap<>();
for (int i =0; i< s.length(); i++)
{
char c = s.charAt(i);
answer[i] = i - map.getOrDefault(c, i + 1);
map.put(c, i);
}
return answer;
}
λλ λ°©μ HashMapμ μ¬μ©ν΄μ λΉμ·νκ² νλλ° Characterλ₯Ό μ¬μ©ν΄μ νΌ νμ΄κ° μμ΄μ κ°μ Έμλ€.
κ·Έλ¦¬κ³ λλ getOrDefaultλ₯Ό κΈ°μ΅ λͺ»ν΄μ λΆκΈ°μ²λ¦¬λ‘ νλλ°... μ΄κ±Έ μμλλΌλ©΄ λ κ°λ¨νκ² ν μ μμμ κ²μ΄λ€ γ γ
πΎ getOrDefault (key, DefaultValue)
: μ°Ύλ ν€κ° μ‘΄μ¬νλ€λ©΄ μ°Ύλ ν€μ κ°μ λ°ννκ³ μλ€λ©΄ κΈ°λ³Έ κ°μ λ°ννλ λ©μλ
key - κ°μ κ°μ ΈμμΌ νλ μμμ ν€
defaultValue - μ§μ λ ν€λ‘ λ§€νλ κ°μ΄ μλ κ²½μ° λ°νλμ΄μΌ νλ κΈ°λ³Έκ°
getOrDefaultλ₯Ό μ¬μ©ν΄μ c λ¬Έμμ΄μ΄ μμΌλ©΄ κ·Έ λ¬Έμμ΄ μμΉλ₯Ό λ°ννκ³ i - 1 κ°μ answerμ λ£μ΄μ£Όμ§λ§,
λ§μ½ μλ€λ©΄ i+1 κ°μ λ°ννκ³ κ·Έ κ°μ iμ λΉΌμ€λ€.