Jieunnyμ λΈλ‘κ·Έ
[JS] νλ‘κ·Έλλ¨Έμ€ - ν€ν¨λ λλ₯΄κΈ° λ³Έλ¬Έ
π λ¬Έμ
μ€λ§νΈν° μ ν ν€ν¨λμ κ° μΉΈμ λ€μκ³Ό κ°μ΄ μ«μλ€μ΄ μ ν μμ΅λλ€.
μ΄ μ ν ν€ν¨λμμ μΌμκ³Ό μ€λ₯Έμμ μμ§μκ°λ½λ§μ μ΄μ©ν΄μ μ«μλ§μ μ
λ ₯νλ €κ³ ν©λλ€.
맨 μ²μ μΌμ μμ§μκ°λ½μ * ν€ν¨λμ μ€λ₯Έμ μμ§μκ°λ½μ # ν€ν¨λ μμΉμμ μμνλ©°, μμ§μκ°λ½μ μ¬μ©νλ κ·μΉμ λ€μκ³Ό κ°μ΅λλ€.
- μμ§μκ°λ½μ μνμ’μ° 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 ν΄μ£ΌμΈμ.
π‘ μμ΄λμ΄
μΌλ¨ 2μ°¨μ λ°°μ΄μ ν€ν¨λ λͺ¨μ ν λΉν΄μ€λ€.
μΌμ μ€λ₯Έμμ΄ μ΄μ μ λ λλ λμ§ μ μ₯ν΄ μ€ λ³μλ νμνλ€.
numbers λλ©΄μ 1, 4, 7 λ§λλ©΄ answerμ 'L'μ μ μ₯νκ³ , 3, 6, 9λ₯Ό λ§λλ©΄ 'R'μ μ μ₯νλ€.
λλ¨Έμ§ μ«μλ λ¬Έμμ΄μ λ§λλ©΄ 거리λ₯Ό κ³μ°ν΄μΌ νλ―λ‘ κ±°λ¦¬ κ³μ°νλ ν¨μλ₯Ό λ§λ λ€.
거리 κ³μ°νλ ν¨μλ μ΄μ μ λλ₯Έ μ«μμ 2μ°¨μ μΈλ±μ€λ₯Ό ꡬν΄μ λ€μμ λλ₯Ό μ«μμ μΈλ±μ€μ 거리λ₯Ό λΉκ΅νλ€.
κ±°λ¦¬κ° μμ μμΌλ‘ λλ₯΄κ±°λ, κ±°λ¦¬κ° κ°μΌλ©΄ μ΄λ μμ‘μ΄μΈμ§μ λ°λΌ λλ₯Έλ€.
βοΈ νμ΄
function solution(numbers, hand) {
var answer = '';
let left = '*';
let right = '#';
let keypad = [ // ν€ν¨λ μ μ₯
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
['*', 0 , '#']
]
for(let i=0; i<numbers.length; i++){
if(numbers[i] === 1 || numbers[i] === 4 || numbers[i] === 7){
// μΌμμΌλ‘ λλ₯Ό μ«μ
answer += 'L';
left = numbers[i];
}
else if(numbers[i] === 3 || numbers[i] === 6 || numbers[i] === 9){
// μ€λ₯ΈμμΌλ‘ λλ₯Ό μ«μ
answer += 'R';
right = numbers[i];
}
else{
// κ·Έ μΈμ μ«μ λλ μ λ
let leftDistance = getDistance(keypad, left, numbers[i]);
// μΌμμΌλ‘λΆν°μ 거리
let rightDistance = getDistance(keypad, right, numbers[i]);
// μ€λ₯ΈμμΌλ‘λΆν°μ 거리
if(leftDistance > rightDistance){
right = numbers[i];
answer += 'R';
}
else if(leftDistance < rightDistance){
left = numbers[i];
answer += 'L';
}
else {
if(hand === 'right'){
right = numbers[i];
answer += 'R';
}
else{
left = numbers[i];
answer += 'L';
}
}
}
}
return answer;
}
function getDistance(keypad, a, b){
// μΈλ±μ€λΌλ¦¬ 거리 ꡬνλ ν¨μ
let ax = 0;
let ay = 0;
let bx = 0;
let by = 0;
let distance = 0;
for(let i=0; i<4; i++){
for(let j=0; j<3; j++){
if(keypad[i][j] === a){
// λλ₯Έ μ«μμ μΈλ±μ€ ꡬν΄μ£ΌκΈ°
ax = i;
ay = j;
}
if(keypad[i][j] === b){
bx = i;
by = j;
}
}
}
distance = Math.abs(ax - bx) + Math.abs(ay - by);
return distance;
}
'Study > Coding Test' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JS] νλ‘κ·Έλλ¨Έμ€ - μΉμμ΄(2) (0) | 2023.02.01 |
---|---|
[JS] νλ‘κ·Έλλ¨Έμ€ - ν¬λ μΈ μΈνλ½κΈ° κ²μ (2) | 2023.02.01 |
[JS] νλ‘κ·Έλλ¨Έμ€ - κΈ°μ¬ λ¨μ (0) | 2023.02.01 |
[JS] νλ‘κ·Έλλ¨Έμ€ - μ«μ μ§κΏ (0) | 2023.01.30 |
[JS] νλ‘κ·Έλλ¨Έμ€ - 체μ‘볡 (0) | 2023.01.30 |