-
parseInt () 메서드
parseInt()문자열을 구문 분석하고 정수를 반환합니다. 공백이 허용됩니다. 첫 번째 숫자 만 반환됩니다.
- 실수도 소수점을 없애고 정수로 변환한다.
- 숫자로 시작한 뒤 공백이 있으면 첫 숫자만 반환한다.
- 문자로 시작하면 NaN을 반환한다.N이 소수인지 판별하는 방법
N의 제곱근으로 나눠보고 나눠지면 소수가 아니다
N의 제곱근은 Math.sqrt(N)으로 구할 수 있고, 정수로 나누어 떨어지지 않는다면 parseInt(Math.sqrt(N))을 하면된다.
코플릿 17~21
소수 여부 파악하기
function isPrime(num) { let result = true; //기본 결과 값 설정 let sqrt = parseInt(Math.sqrt(num)); //제곱근 정수로 바꾸기 if(num === 2){ //2는 무조건 소수 return result; } for(let i = 2; i<=sqrt; i++){ if(num % i ===0){ //num이 2부터 제곱근까지의 값으로 나눴을 때 0이되면 result가 false로바뀜 result = false; } }return result; //0이 안되면 true 인거고 0이 되면 false인 것 리턴 // TODO: 여기에 코드를 작성합니다. }
- Math.sqrt와 parseInt를 이해하려고 노력하느라 애썼다. 중학교 때부터 수학을 포기하지 말았어야 했다..
소수 목록 만들기
function listPrimes(num) { let result = '2'; //2는 무조건 소수기에 맨 앞에 붙이기 for (let i = 3; i <= num; i = i+2){ //1과 2 제외하기 위해 3 & 짝수는 무조건 소수가 아니니 홀수만나오도록 +2 let isPrime = true; //소수와 낫소수나누기 let sqrt = parseInt(Math.sqrt(i)); //제곱근 정수로 바꾸기 for (let j = 3; j<=sqrt; j = j+2){ //1과 2 제외하고 3 / 제곱근보다 적게 (왜 j+2인지 모르겠음) if(i % j === 0){ isPrime = false; break; //i가 j로 나눠지는 순간 false로 변하면서 브레이크 먹고 다시 i+=2 반복 } } if(isPrime){ //isPrime이 트루면 (i%j !== 0)결과에 더하기 result = `${result}-${i}`; } } return result; }
- break위치 잡는게 너무 어려웠고, 아마 다시 풀라면 못풀거다. 그래서 다시 풀 예정
문자열을 입력받아 문자열을 첨부터 한글자씩 붙이기
function makeMarginalString(str) { let result = ''; for (let i = 0; i < str.length; i++) { for (let j = 0; j <= i; j += 1) { // 0 - 0,1 - 0,1,2 ...이렇게 훑어야해서 이중뽀문 result = result + str[j]; } } return result; } //makeMarginalString('abc') //result = 'aababc'
- 왜 이중뽀문을 써야하는지 도무지 이해가 안가서 두뇌풀가동했던 문제다. 정말 바보아닌지.