μ‘°μ΄μ€ν± (with.Java)
μ‘°μ΄μ€ν± (with.Java) λ¬Έμ μ λνμ¬ μμλ³Έ κΈμ λλ€.
μ½λ© ν μ€νΈ λ¬Έμ λ₯Ό νλ©°, νμλ λ¬Έμ μ λν νκ³ λ₯Ό ν΄λ³΄κ³ μ ν©λλ€.
λ¬Έμ μ λν΄ λ¨Όμ μμλ³΄κ² μ΅λλ€.
λ¬Έμ
μ‘°μ΄μ€ν±μΌλ‘ μνλ²³ μ΄λ¦μ μμ±νμΈμ.
맨 μ²μμ Aλ‘λ§ μ΄λ£¨μ΄μ Έ μμ΅λλ€.
ex. μμ±ν΄μΌ νλ μ΄λ¦μ΄ μΈ κΈμλ©΄ AAA, λ€ κΈμλ©΄ AAAA
μ‘°μ΄μ€ν±μ κ° λ°©ν₯μΌλ‘ μμ§μ΄λ©΄ μλμ κ°μ΅λλ€.
β² - λ€μ μνλ²³
βΌ - μ΄μ μνλ²³ (Aμμ μλμͺ½μΌλ‘ μ΄λνλ©΄ Zλ‘)
β - 컀μλ₯Ό μΌμͺ½μΌλ‘ μ΄λ (첫 λ²μ§Έ μμΉμμ μΌμͺ½μΌλ‘ μ΄λνλ©΄ λ§μ§λ§ λ¬Έμμ 컀μ)
βΆ - 컀μλ₯Ό μ€λ₯Έμͺ½μΌλ‘ μ΄λ (λ§μ§λ§ μμΉμμ μ€λ₯Έμͺ½μΌλ‘ μ΄λνλ©΄ 첫 λ²μ§Έ λ¬Έμμ 컀μ)
μλ₯Ό λ€μ΄ μλμ λ°©λ²μΌλ‘ βJAZβλ₯Ό λ§λ€ μ μμ΅λλ€.
- 첫 λ²μ§Έ μμΉμμ μ‘°μ΄μ€ν±μ μλ‘ 9λ² μ‘°μνμ¬ Jλ₯Ό μμ±ν©λλ€.
- μ‘°μ΄μ€ν±μ μΌμͺ½μΌλ‘ 1λ² μ‘°μνμ¬ μ»€μλ₯Ό λ§μ§λ§ λ¬Έμ μμΉλ‘ μ΄λμν΅λλ€.
- λ§μ§λ§ μμΉμμ μ‘°μ΄μ€ν±μ μλλ‘ 1λ² μ‘°μνμ¬ Zλ₯Ό μμ±ν©λλ€.
λ°λΌμ 11λ² μ΄λμμΌ βJAZβλ₯Ό λ§λ€ μ μκ³ , μ΄λκ° μ΅μ μ΄λμ λλ€.
λ§λ€κ³ μ νλ μ΄λ¦ nameμ΄ λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, μ΄λ¦μ λν΄ μ‘°μ΄μ€ν± μ‘°μ νμμ μ΅μκ°μ return νλλ‘ solution ν¨μλ₯Ό λ§λμΈμ.
μ νμ¬ν
- nameμ μνλ²³ λλ¬Έμλ‘λ§ μ΄λ£¨μ΄μ Έ μμ΅λλ€.
- nameμ κΈΈμ΄λ 1 μ΄μ 20 μ΄νμ λλ€.
μ μΆλ ₯ μμ
name | return |
---|---|
βJEROENβ | 56 |
βJANβ | 23 |
λ¬Έμ μ λν λμ νμ΄
class Solution {
public int solution(String name) {
int answer = 0;
int cursor = name.length() - 1;
for(int i = 0; i < name.length(); i++){
answer += Math.min(name.charAt(i) - 'A', 'Z' - name.charAt(i) + 1);
if(i < name.length() - 1 && name.charAt(i + 1) == 'A'){
int temp = i + 1;
while(temp < name.length() && name.charAt(temp) == 'A'){
temp++;
}
cursor = Math.min(cursor, (i * 2) + (name.length() - temp));
cursor = Math.min(cursor, i + (name.length() - temp) * 2);
}
}
return answer + cursor;
}
}
νμ΄ μ€λͺ
λ¨Όμ , answer λ³μλ κ° λ¬Έμλ₯Ό μ‘°μνμ¬ λ§λ€μ΄μΌ νλ λ¬Έμμ΄μ μ‘°μ νμλ₯Ό λμ νλ λ³μμ λλ€.
λ¬Έμμ΄μ μ²μλΆν° λκΉμ§ λ°λ³΅νλ©΄μ κ° λ¬Έμλ₯Ό μ‘°μ¬ν©λλ€.
νμ¬ λ¬Έμμμ βAβκΉμ§μ 거리μ βZβμμ νμ¬ λ¬ΈμκΉμ§μ 거리 μ€ μμ κ°μ μ ννμ¬ ν΄λΉ λ¬Έμλ₯Ό μ‘°μνλ λ° νμν μ΅μνμ μ‘°μ νμλ₯Ό κ³μ°ν©λλ€.
μλ₯Ό λ€μ΄, νμ¬ λ¬Έμκ° βBβλΌλ©΄, βAβκΉμ§λ ν μΉΈ μλ‘ μ‘°μνλ©΄ λλ―λ‘ 1λ²μ μ‘°μμ΄ νμν©λλ€.
λλ βYβμμ βZβκΉμ§ ν μΉΈ μλλ‘ μ‘°μνλ©΄ λλ―λ‘ λ§μ°¬κ°μ§λ‘ 1λ²μ μ‘°μμ΄ νμν©λλ€.
μ΄λ° μμΌλ‘ κ° λ¬Έμλ§λ€ μ‘°μ νμλ₯Ό κ³μ°νμ¬ answer λ³μμ λμ ν©λλ€.
κ·Έ λ€μμΌλ‘, μ°μλ βAβλ₯Ό λ§λλ κ²½μ° μΆκ°μ μΈ μ΄λ νμλ₯Ό κ³μ°ν©λλ€.
βAβλ‘ μ΄μ΄μ§λ λΆλΆμ λ§λλ©΄ κ·Έ λ€μμΌλ‘ μ΄λν λ μΆκ°μ μΈ μ‘°μ νμλ₯Ό κ³ λ €ν΄μΌ ν©λλ€.
μλνλ©΄ μ°μλ βAβλ₯Ό λ§λλ©΄ λλμκ° λμλ μ‘°μ νμκ° λ°μνκΈ° λλ¬Έμ λλ€.
λ°λΌμ νμ¬ λ¬Έμ λ€μμ μ°μλ βAβλ₯Ό λ§λλ©΄, κ·Έ λ€μμΌλ‘ μ΄λν λκΉμ§μ μΆκ°μ μΈ μ‘°μ νμλ₯Ό κ³μ°ν©λλ€.
μ΄λ₯Ό μν΄ cursor λ³μλ₯Ό μ¬μ©ν©λλ€.
cursor λ³μλ μ°μλ βAβλ₯Ό λ§λκ³ λ€μμΌλ‘ μ΄λν λμ μ΅μνμ μΆκ° μ‘°μ νμλ₯Ό μ μ₯ν©λλ€.
μ΄λ₯Ό μ΄κΈ°ννκΈ° μν΄ cursorλ₯Ό nameμ κΈΈμ΄ - 1λ‘ μ΄κΈ°νν©λλ€.
μ΄λ λ¬Έμμ΄ λκΉμ§ ν λ² μ΄λνλ κ²μ΄ μ΅μ μ κ²½μ°λΌκ³ κ°μ νκΈ° λλ¬Έμ λλ€.
μ°μλ βAβλ₯Ό λ§λλ κ²½μ°, κ·Έ λ€μμΌλ‘ μ΄λν λκΉμ§μ μ‘°μ νμλ₯Ό κ³μ°ν©λλ€.
μ΄ λ, λ κ°μ§ κ²½μ°λ₯Ό λΉκ΅νμ¬ λ μμ κ°μ μ νν©λλ€.
νμ¬ λ¬Έμ μμΉ iμμ μ°μλ βAβκ° λλλ μμΉκΉμ§ μ΄λν ν, λμμλΆν° νμ¬ μμΉκΉμ§μ 거리μ νμ¬ μμΉκΉμ§μ 거리λ₯Ό λν©λλ€.
λλ, νμ¬ μμΉκΉμ§μ 거리μ μ°μλ βAβκ° λλλ μμΉλΆν° λκΉμ§ μ΄λν ν λ€μ λλμμ¬ λκΉμ§μ 거리λ₯Ό λν©λλ€.
μ΄ κ²½μ°, νμ¬ μμΉκΉμ§μ 거리μλ€κ° μ°μλ βAβκ° λλλ μμΉλΆν° λκΉμ§μ 거리λ₯Ό λ λ°°λ‘ κ³±ν κ°μ λν©λλ€.
μ΄λ κ² κ³μ°λ μΆκ°μ μΈ μ΄λ νμλ₯Ό cursor λ³μμ μ μ₯ν©λλ€.
λ§μ§λ§μΌλ‘, answerμ λμ λ λ¬Έμ μ‘°μ νμμ μΆκ°μ μΈ μ΄λ νμ(cursor)λ₯Ό λνμ¬ μ΅μ’ μ μΈ μ‘°μ νμλ₯Ό λ°νν©λλ€.
κ²°λ‘
μ΄λ¬ν λ°©μμΌλ‘ μ£Όμ΄μ§ λ¬Έμμ΄μ μ‘°μνμ¬ λͺ©ν λ¬Έμμ΄λ‘ λ§λ€κΈ° μν μ΅μνμ μ‘°μ νμλ₯Ό κ³μ°ν©λλ€.