0일차: JavaScript로 Fizz Buzz 문제 해결
따라서 Fizz Buzz 인코딩 도전에 익숙하지 않은 사람들에게는 다음과 같습니다.
The FizzBuzz problem is a classic test given in coding interviews. The task is simple:
Print integers 1 to N, but print “Fizz” if an integer is divisible by 3, “Buzz” if an integer is divisible by 5, and “FizzBuzz” if an integer is divisible by both 3 and 5.
이 도전이 무엇을 의미하는지 우리가 다 알고 있는 이상 그것을 해결하기 시작합시다.
첫 번째 단계는 어떤 언어로 코드를 작성할지 결정하는 것이다.앞서 언급했듯이 JavaScript를 사용하여 구현하고 있습니다.논리는 변하지 않고 거의 모든 프로그래밍 언어로 실현할 수 있다.
이어서 우리는 이 문제를 위해 명확한 범위를 설정했다.현재의 문제는 1에서 N까지의 정수를 인쇄하는 것이지만, 함수를 사용하지 않기 위해서 나는 1에서 100까지 인쇄할 것이다.이제 우리는 자신의 범위가 생겼으니, 코드를 좀 쓰기 시작합시다!
우리의 코드를 구축하다
변수 선언
우리는 변수를 정의하는 것부터 시작한다.변수 이름
i
을 let
변수 유형과 함께 사용하기 때문에 i
의 값은 계속 수정할 수 있습니다.let i=1;
논리가 뭐예요?
이제 우리 이 문제를 해결하는 논리에 대해 이야기합시다.우리는 100줄을 인쇄해야 한다는 것을 알고 있다. 줄마다 Fizz, Buzz, Fizz Buzz 또는 숫자로 구성되어 있다.같은 임무를 여러 번 수행하기 위해서는 순환을 사용해야 한다.나는
while
순환을 사용했다.while(i<=100){
}
주기 작업은 다음과 같습니다.while
문장은 ()에서 정의한 테스트 조건이 진실로 유지되면 그 순환은 문장 블록을 실행합니다.회로에 들어가기 전에 시험 조건을 평가한다.내
while
문장에서 i
가 100보다 작거나 같으면 순환을 실행한다.내가 <=
를 사용하는 이유는 코드를 100번 실행해야 하기 때문이다.<
만 사용하면 99번 운행할 수 있습니다. 왜냐하면 우리는 0이 아니라 i=1
부터 시작하기 때문입니다.프로세스 맵 시각화
우리는 지금 우리가 하고 싶은 일에 따라 순환 중의 문장을 정의해야 한다.
우리는 기본적으로 각 생산 라인을 위해 4개의 다른 임무 중 1개를 완성해야 한다.
i
를 1씩 늘려야 합니다.주의: 한 숫자가 다른 숫자로 정제될 수 있는지 확인하기 위해서, 우리는
%
연산자를 사용합니다.%
는 여수 연산자로서 한 수를 다른 수로 나누면 여수를 준다.다른 수에 의해 정제될 수 있는 하나의 나머지 수는 0이다. 이것이 바로 우리가 비교 연산자를 사용하여 테스트한 결과이다.흐름도를 조건문으로 바꾸기
컴퓨터가 위에서 언급한 흐름도를 이해하기 위해서는 이를 조건문으로 전환해야 한다.조건문은 코드가 실행될 수 있는지 여부를 결정합니다.
나는
if
, else if
와 else
문장을 사용할 것이다.if
주장첫 번째 조건을 위에서 설정하려면 다음 구문을 사용합니다.
if (i%5===0 && i%3===0){
console.log("FizzBuzz");
i++;
}
만약 내가 상술한 코드를 간단한 영어로 변환해야 한다면, 나는 기본적으로 컴퓨터에 알려주고 있다.i
를 5로 나눈 나머지 수가 0이고 i
를 3으로 나눈 나머지 수가 0이면 콘솔에서 "Fizz Buzz"를 인쇄합니다.이 문장을 실행하면 i
의 값을 1 증가시킵니다.이 두 조건은 모두 진실이어야 하기 때문에 & (논리 and) 연산자를 사용해야 한다는 것을 기억해라.
위의
if
조건이true로 되돌아오면, 자바스크립트는 나머지 조건을 모두 건너뛰고while 순환 조건을 되돌려줍니다.else if
주장그리고 우리는 다음 두 가지 조건을 위해
else if
문장을 쓴다.우리는 기본적으로 첫 번째 조건if
이 정확하지 않으면 이 조건을 테스트해서 이 조건이 정확한지 확인한다.true라면 문장 블록
else
을 실행하고 다음 문장if
을 계속 실행하며 같은 동작을 수행합니다. else if(i%3===0){
console.log("Fizz");
i++;
}
else if(i%5===0){
console.log("Buzz");
i++;
}
else
주장마지막 조건에 대해 말하자면, 만약 지금까지 당신이 이미 도달했다면, 이것은 이 숫자를 3이나 5로 나누어서는 안 된다는 것을 의미하기 때문에, 이 숫자를 원래대로 인쇄한 다음에 1을 늘리기만 하면 된다.
else{
console.log(i);
i++;
!중요한 알림: 매번 i
순환을 통과할 때마다 그 값이 증가한다는 것을 기억해야 한다.증가i
가 없으면 값은 항상 1이고 순환은 영원히 실행되며 숫자 1만 인쇄됩니다.이 모든 것이 어떻게 작동하는지 이해하다
코드가 처음 실행되었을 때
i=1
는 while
순환에 들어갔습니다. i
는 100보다 작고 첫 번째if
문장으로 테스트를 진행했기 때문입니다.i=1
는 5 또는 3으로 나누어질 수 없기 때문에 입력하고 이하else if
문장으로 이동하는 것을 허용하지 않습니다.마찬가지로
i=1
는 3으로 나누어지지 못해 다음else if
문장으로 옮겨야 했지만 5로 나누어지지 못해 다시 거절당했다.마지막으로
i=1
문장을 가져옵니다. 이 문장은 어떠한 조건 테스트도 하지 않은 상태에서 실행되고 else
의 값을 출력합니다. 이 값은 현재 1입니다.i
의 증가 연산자를 빌려 i
의 값을 1로 증가시켰다.재할당된 값i++
이 이제 2입니다.위에서 설명한 전체 과정은
i
에서 중복됩니다.이 과정은 총 100회 계속 운행되며 매번
i=2
의 값이 1씩 증가한다.while 순환 100회 실행 후 i
의 값은 현재 101입니다.이번i
순환은 101<=100이false로 되돌아오기 때문에 실행되지 않습니다.이것은while 순환을 멈추게 할 것입니다.이렇게!
while
순환이 100번 실행되며, 요청한 내용을 인쇄합니다.결과는 다음과 같습니다.(부언: 이것link을 클릭하면 1부터 100까지의 전체 해결 방안을 볼 수 있습니다.콘솔에 표시된 상태에서 코드펜을 어떻게 끼워 넣는지 몰라서, 만약 네가 이렇게 한다면 나에게 가르쳐 줘!
나는 이 도전을 쓰는 것을 매우 좋아하고, 또한 그것을 쓰는 것도 매우 좋아한다.이것은 내가 처음으로 기술적인 것을 쓴 것이다. 내가 배운 것을 종이 위에 쓰는 것은 매우 재미있다.읽어주셔서 감사합니다!
Reference
이 문제에 관하여(0일차: JavaScript로 Fizz Buzz 문제 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/goa2usa/day-0-solving-the-fizzbuzz-problem-with-javascript-10jj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)