[νλ‘κ·Έλλ¨Έμ€] ν€ν¨λ λλ₯΄κΈ°
https://programmers.co.kr/learn/courses/30/lessons/67256
λ¬Έμ μ€λͺ
μ€λ§νΈν° μ ν ν€ν¨λμ κ° μΉΈμ λ€μκ³Ό κ°μ΄ μ«μλ€μ΄ μ ν μμ΅λλ€.
μ΄ μ ν ν€ν¨λμμ μΌμκ³Ό μ€λ₯Έμμ μμ§μκ°λ½λ§μ μ΄μ©ν΄μ μ«μλ§μ μ
λ ₯νλ €κ³ ν©λλ€.
맨 μ²μ μΌμ μμ§μκ°λ½μ * ν€ν¨λμ μ€λ₯Έμ μμ§μκ°λ½μ # ν€ν¨λ μμΉμμ μμνλ©°, μμ§μκ°λ½μ μ¬μ©νλ κ·μΉμ λ€μκ³Ό κ°μ΅λλ€.
- μμ§μκ°λ½μ μνμ’μ° 4κ°μ§ λ°©ν₯μΌλ‘λ§ μ΄λν μ μμΌλ©° ν€ν¨λ μ΄λ ν μΉΈμ κ±°λ¦¬λ‘ 1μ ν΄λΉν©λλ€.
- μΌμͺ½ μ΄μ 3κ°μ μ«μ 1, 4, 7μ μ λ ₯ν λλ μΌμ μμ§μκ°λ½μ μ¬μ©ν©λλ€.
- μ€λ₯Έμͺ½ μ΄μ 3κ°μ μ«μ 3, 6, 9λ₯Ό μ λ ₯ν λλ μ€λ₯Έμ μμ§μκ°λ½μ μ¬μ©ν©λλ€.
- κ°μ΄λ° μ΄μ 4κ°μ μ«μ 2, 5, 8, 0μ μ
λ ₯ν λλ λ μμ§μκ°λ½μ νμ¬ ν€ν¨λμ μμΉμμ λ κ°κΉμ΄ μμ§μκ°λ½μ μ¬μ©ν©λλ€.
4-1. λ§μ½ λ μμ§μκ°λ½μ κ±°λ¦¬κ° κ°λ€λ©΄, μ€λ₯Έμμ‘μ΄λ μ€λ₯Έμ μμ§μκ°λ½, μΌμμ‘μ΄λ μΌμ μμ§μκ°λ½μ μ¬μ©ν©λλ€.
μμλλ‘ λλ₯Ό λ²νΈκ° λ΄κΈ΄ λ°°μ΄ numbers, μΌμμ‘μ΄μΈμ§ μ€λ₯Έμμ‘μ΄μΈ μ§λ₯Ό λνλ΄λ λ¬Έμμ΄ handκ° λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ, κ° λ²νΈλ₯Ό λλ₯Έ μμ§μκ°λ½μ΄ μΌμμΈ μ§ μ€λ₯ΈμμΈ μ§λ₯Ό λνλ΄λ μ°μλ λ¬Έμμ΄ ννλ‘ return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
μ νμ¬ν
- numbers λ°°μ΄μ ν¬κΈ°λ 1 μ΄μ 1,000 μ΄νμ λλ€.
- numbers λ°°μ΄ μμμ κ°μ 0 μ΄μ 9 μ΄νμΈ μ μμ λλ€.
- handλ "left" λλ "right" μ λλ€.
- "left"λ μΌμμ‘μ΄, "right"λ μ€λ₯Έμμ‘μ΄λ₯Ό μλ―Έν©λλ€.
- μΌμ μμ§μκ°λ½μ μ¬μ©ν κ²½μ°λ L, μ€λ₯Έμ μμ§μκ°λ½μ μ¬μ©ν κ²½μ°λ Rμ μμλλ‘ μ΄μ΄λΆμ¬ λ¬Έμμ΄ ννλ‘ return ν΄μ£ΌμΈμ.
Code
class Solution {
public String solution(int[] numbers, String hand) {
String answer = new String();
int left=10,right=12;
for(int number: numbers){
if(number==0) number=11;
if(number%3 ==1){
answer += "L";
left = number;
}
else if(number%3==0){
answer += "R";
right = number;
}
else {
int leftLength = getLength(left, number);
int rightLength = getLength(right, number);
if(leftLength>rightLength){
answer += "R";
right = number;
}
else if(leftLength<rightLength){
answer += "L";
left = number;
}
else {
if(hand.equals("left")){
answer += "L";
left = number;
}
else {
answer += "R";
right = number;
}
}
}
}
return answer;
}
public int getLength(int start, int end){
int x = (start-1)/3;
int y = (start-1)%3;
int endX = end/3;
int endY = 1;
return Math.abs(x-endX) + Math.abs(y-endY);
}
}
Code μ€λͺ
ν€ν¨λλ₯Ό μ’νλ‘ λ³νν΄μ μκ°μ ν΄λ³΄μλ€. 맨 μλ«μ€ *, 0, #μ κ°κ° 10,11,12 λΌκ³ μκ°νλ€.
ν€ν¨λμμ 1μ΄ (0,0), 2κ° (0,1) μ΄λ° μμΌλ‘ μκ°νκ³ κ·μΉμ μ°Ύμ보λ
맨 μΌμͺ½μ€μ 3μΌλ‘ λλμμλ λλ¨Έμ§κ° 1μ΄κ³ , 맨 μ€λ₯Έμͺ½μ€μ 3μΌλ‘ λλμμ λ λλ¨Έμ§κ° 0μ΄λ€. μ΄λ°μμΌλ‘ μΌμκ³Ό μ€λ₯Έμμ ꡬλΆνκ³ λλ₯Έ μλ₯Ό leftμ rightμ μ μ₯ν¨μΌλ‘μ¨ κ°μ₯ λ§μ§λ§μ λλ₯Έ μλ₯Ό κΈ°μ΅νκ² νλ€.
κ·Έλ¦¬κ³ κ°μ΄λ°μ€ μΌλλ getLengthν¨μλ₯Ό μ΄μ©ν΄μ μ΄λ€ μμ΄ λ κ°κΉμ΄μ§ μμλ΄κΈ°μν΄μ κ°κ°μ μμμ μ΄λ² numberμ 거리λ₯Ό ꡬνλ€.
λμ¨ κ±°λ¦¬λ₯Ό λ°νμΌλ‘ μΌμμΌλ‘ κ°μ§ μ€λ₯ΈμμΌλ‘ κ°μ§λ₯Ό μ ν΄μ£Όμλ€.
λ°°μ΄μ
μ΄λ² λ¬Έμ λ₯Ό νλ©΄μ λ¨Όμ μ’νλ‘ μΉνν΄μ μκ°νλκΉ κ±°λ¦¬λ₯Ό ꡬνλκ² κ°λ₯ν΄μ‘κ³ , μ’νλ‘ μΉννλ κ³Όμ μμ κ·μΉμ μ°ΎμμΌλ‘μ¨
μ½λλ₯Ό λ μ§§κ² λ§λ€ μ μμλ€.
'Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Algoritm/Java][νλ‘κ·Έλλ¨Έμ€] μμ° (0) | 2021.07.23 |
---|---|
[Algorithm/Java][νλ‘κ·Έλλ¨Έμ€] λ‘λμ μ΅κ³ μμμ μ΅μ μμ (0) | 2021.07.20 |
[Algorithm/Java][νλ‘κ·Έλλ¨Έμ€] μ«μ λ¬Έμμ΄κ³Ό μλ¨μ΄ (0) | 2021.07.18 |
[Algoritm/Java][νλ‘κ·Έλλ¨Έμ€] 체μ‘볡 (0) | 2021.07.13 |
[Algoritm/Java][νλ‘κ·Έλλ¨Έμ€] ν°μΌλͺ¬ (0) | 2021.07.12 |