반복문(while)

hyo·2021년 9월 26일
0

1.

수를 입력받아 홀수인지 여부를 리턴하라는 문제이다.

인자 num 에는 number타입의 정수가 들어감.
반복문(while)을 사용하여야하고,
나눗셈(/),나머지(%)연산자 사용금지.
0은 짝수로 간주.
boolean타입을 리턴해야함.

우선 위의 조건을 바탕으로 홀수인지 여부를 구하는 방법 하나를 생각해보았다.
인자에 2를 반복적으로 (-)빼서 0이 되면 짝수, 1이 되면 홀수이다.
단 조건은 2를 계속 뺄수는 없으므로 while()조건 안에는 num >= 0을 써줄것이다. 그러면 while(num >= 0) 식은 num >= 0 이 아닌 num < 0값이 나올때까지만 반복하므로(쉽게말해 num >= 0 인 동안만 반복) num가
1이거나 0 일때까지만 반복하게 될것이다.
그럼 코드를 써본다.

우선 num가 음수일때 num = -num; 로 값을 내준다. Math.abs() 메서드를 써도 좋다.

그리고 while문안에 조건문을 쓴다.

이제 마지막으로 아래에 while안쪽에 num = num - 2; 를 써준다.

이게 옳은 코드이다.

- 헷갈리는 부분

하지만 조금 헷갈렸던부분은 num = num - 2;를 while문 제일 위쪽에 넣었을때 num에 0을 할당할경우 오류가 났다.(undefined가 리턴됨)

아마 0을 할당하면
위부터 순서대로 보자면, 우선 while문안에 들어가
num = 0 - 2;가 계산될것이고, 그럼 num = - 2가 된다.
가장 상단에 if(num < 0){num = -num}에는 적용이 되질않는다.
그러므로 undefined가 나오는것이다.

2.

이번엔 수(num)을 입력받아 1을 포함하여 num개의 홀수로 구성된 문자열을 리턴하라는 문제이다.

인자 num은 number타입의 정수(num >= 1)
string타입을 리턴하라.
반복문(while)을 써라.
숫자(number string)사이의 구분은없다(ex.'1357911')

우선 수도코드를 써본다.
// 수를입력받아 1을 포함하여 num개의, 홀수로 구성된, 문자열을 리턴
// ''+String(1) ,String(1)+String(3)...이런식으로 써야한다.
// 결과값, 반복되어 뒤에 붙여질 string타입의홀수, 반복되어질 수

그리고 이제 반복문(while)을 쓰고 count가 반복되어질횟수이므로 count <= num을 조건으로 넣는다.

이제 결과값이 '13579'와 같이 뒤에 1부터시작한 홀수를 붙여주는 값과 반복되어질 횟수를 증감시키는 식을 써넣는다. -> result = result + String(i); i+=2; count++;
그리고 마지막에 결과값을 리턴해준다.

여기서도 헷갈리는 부분은 위의 1번문제 헷갈리는부분과 비슷하므로 참고하면 되겠다. 컴퓨터가 코드를 위에서부터 차례대로 읽어나간다고 생각하면 헷갈리지않는다.

profile
개발 재밌다

0개의 댓글