[Algorithm] 나머지 구하기

yongkini ·2022년 10월 12일
0

Algorithm

목록 보기
55/55

프로그래머스 코딩테스트 연습 - 나머지 구하기

: 너무 쉬운 구몬 학습과 같은 문제들이지만 너무 오랜만에 코테 문제를 풀어서 이렇게 가벼운 문제들로 워밍업을 해보고자 풀어본다(왜 혼자 핑계를 대시고 계시죠..?)

: 문제는 너무나도 간단하다. 너무 간단해서 나만의 룰을 추가해서 풀어봤다. 본래 % 연산자만 쓰면 바로 답이 나오는 유형이지만, +, - 연산과 while문을 써서 풀어봤다. 나머지를 구한다는게 사실 우리가 수기로 작성해서 풀거나 혹은 머리속으로 연산하기 때문에 굉장히 심플한 과정일 수 있지만 이걸 컴퓨터에게 하나하나 설명한다고 했을 때는 조금 다른 얘기가 된다. 예시로 설명해보면 13명의 사람들을 딱 같은 비율인 N명씩(N = 주어지는 파라미터) 나눠서 학급에 배정한다 했을 때 순서대로 N명을 1반에, N명을 2반에 ... 이렇게 하다보면 결국 딱 나눠 떨어지거나(1), 몇명이 남게 된다(2). 이런 규칙을 생각해보면 +, - 개념만으로도 나눗셈(몫, 나머지) 개념을 소화해낼 수 있다. 아래는 그와 같은 개념에 입각해 만든 코드!.

function solution(num1, num2) {
    // 메서드를 안쓰고(+, -로만) 풀어보자
    // 1) num2를 계속해서 더하다가 num1을 넘어가기 직전의 숫자에서 stop(while문)
    // or 이미 넘어간 상태에서 stop을 해주고, 결과값에서 num2를 한번 빼주면됨(채택)
    // 2) 그 때까지 더해진 값을 num1에서 빼준 소수 단위의 값이 정답임
    // 3) 이 때, 딱 나눠 떨어지는 케이스를 분기처리 하기 위해 while문에서 val === num1 이 같으면 바로 0을 리턴해주면 된다. 
    let val = num2;
    while(true) {
        if(val > num1) {
            break;
        } else if(val === num1) {
            return 0;
        }
        
        val += num2;
    }
    
    return num1 - (val-num2);
}
profile
완벽함 보다는 최선의 결과를 위해 끊임없이 노력하는 개발자

0개의 댓글