[기본 문제풀이] 반복문

rlorxl·2022년 2월 3일
0

문제1

두 수 사이의 숫자들을 출력하는 함수를 작성하시오. 입력은 두 숫자 값이 주어지며, 입력된 숫자를 포함한 두 수 사이의 자연수를 배열로 반환한다.

let input = [
    [3,7],
    [8,3],
    [12,10],
]
for(let i = 0; i < input.length; i++){
    console.log(makeArr(input[i][0], input[i][1]));
}
function makeArr(a,b){
    let arr = [];
    if(a > b) {
        // 변수 스왑
        let t = a;
        a = b;
        b = t;
    }
    for(let i = a; i <= b; i++){
        arr.push(i);
    }
}

a가 b보다 큰 경우, 가상의 t가 a가 가진 값이라고 규정하고 a의 값을 b로 치환한다(a = b). 그리고 b의 값은 t에 담긴 a의 값으로 치환한다.


문제2

2.판매 수량을 입력 받아서, 가장 많이 판매한 종업원 번호를 반환해주는 함수를 작성하시오. 입력은 배열 형태로 종업원 별 판매 수량 값이 주어지며, 가장 많이 판매한 수를 반환한다. 가장 첫번째 번호는 1번이다.(Math함수를 사용하지 않고 구현)

let input = [
    [3, 7, 9, 6, 1],
    [2, 7, 1, 4, 3, 0, 5],
    [7, 5, 0, 1, 2, 12, 6],
];
answer(input);
function answer(team){
    team.forEach((arr) => {
        let resultIdx;
        let max = 0;
        arr.forEach((item,index) => {
            if(item > max){
                max = item;
                resultIdx = index + 1;
            } 
        })
        console.log(resultIdx);
    })
}
  • 종업원 번호 = arr의 Index 값
  • 변수 max를 0으로 선언하고 arr의 item을 각각 비교해서 값이 크면 max에 할당한다.
  • resultIdx = index ( item의 index값 ) + 1
    forEach의 인자로 item뿐만 아니라 index도 반복된다.

문제3

3.두 자연수를 입력 받아 앞의 숫자에서 뒤의 숫자를 뺄셈하며 반복 연산하는 프로그램을 작성하시오. (단, 무한 연산을 막기 위해 뺀 값이 음수일 때 프로그램이 종료된다.)

let input2 = [
    [6,3],
    [9,3],
    [13,7],
];
for(let i = 0; i < input2.length; i++){
    console.log(minusMinus(input2[i][0],input2[i][1]));
}
function minusMinus(a,b){
    let sum;
    let arr = [a,b];
    while(true){
        sum = a - b;
        a = b;
        b = sum;
        if(b < 0) break;   
        arr.push(b);
    }
    /*
    6 3  3   0    3   -3
    a b sum
      a  b  sum
         a   b   sum
             a    b   sum(push되지 않음)
    */
    return arr;
}
  • while 구문의 조건이 항상 참(true)이기 때문에 무한루프로 동작한다.
  • 변수 sum은 a에서 b를 뺀 값을 저장한다. a에 b의 값을 저장한다. b는 sum의 값을 가진다. b의 값이 음수가 될 때까지 동작한다.
    [ 6, 3 ] -> [ 3, 3 ] -> [ 3, 0 ] -> [ 0, 3 ] -> [ 3, -3 ]
profile
즐겜하는거죠

0개의 댓글