11 Sep 2018
|
JavaScript
문제 설명
자연수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
제한 조건
n은 0 이상 3000이하인 자연수입니다.
나의 풀이
function solution(n) {
var answer = 0;
if(n<0 || n>3001){
return false;
}
for(var i=0; i<=n; i++){
if(n%i === 0){
answer += i;
}
}
return answer;
}
n이 0 미만이거나 3000 초과일 경우 false를 반환하도록 했다. 그리고 어떠한 수를 약수로 나누었을때 그 나머지가 0이라는 것을 활용하여 풀었다.
10 Sep 2018
|
JavaScript
문제 설명
정수 num이 짝수일 경우 Even을 반환하고 홀수인 경우 Odd를 반환하는 함수, solution을 완성해주세요.
제한 조건
num은 int 범위의 정수이며 0은 짝수입니다.
나의 풀이
function solution(num) {
var answer = '';
return (num%2 === 0) ? answer = 'Even' : answer = 'Odd';
}
다른 사람의 풀이
function solution(num) {
return num % 2 ? "Odd" : "Even";
}
0이 false라는 것을 활용하여 굳이 num%2 === 0 이라는 것을 기입하지 않고도 깔끔하게 풀어낸 코드가 있었다. 다음부턴 무작정 풀기 전에 어떻게 하면 불필요한 부분을 줄이고 가독성있는 알고리즘을 짤지에 대해 조금 더 고민해보아야겠다.
09 Sep 2018
|
JavaScript
문제 설명
길이가 n이고, 수박수박수박수….와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요.
예를들어 n이 4이면 수박수박을 리턴하고 3이라면 수박수를 리턴하면 됩니다.
제한 조건
n은 길이 10,000이하인 자연수입니다.
나의 풀이
function solution(n) {
if(n>10000) {
return false;
}else{
var answer = '';
for(var i=1; i<=n; i++){
(i%2 ==0) ? answer += '박' : answer+= '수';
}
return answer;
}
}
다른 사람의 풀이
const solution = n => {
return '수박'.repeat(n/2) + (n%2 === 1 ? '수' : '');
}
나는 단순하게 생각하여 홀수이면 ‘수’를 짝수이면 ‘박’을 결과 스트링에 붙이는 방법으로 풀었다. 그런데 제한 조건을 반영하려면 길이 10,000을 초과하는 수는 들어오지 못하게 막아야 할 것 같은데 다른 사람들의 풀이를 보니 그런 부분을 작성한 코드는 없었다. 내가 잘못 이해한건가..?ㅜ
대부분 repeat 함수를 사용하였는데, 내가 거의 10줄로 표현한 코드를 단 한줄로 표현한 코드가 있었다. 나도 익혀서 내것으로 만들도록 노력해야겠다.
08 Sep 2018
|
JavaScript
배열
값을 저장할 수 있는 엘리먼트(변수)의 연속된 공간을 의미한다. 주소(index)를 이용해 각 엘리먼트에 접근 가능함.
배열 정의 방법
- 빈 배열 ex)var arr = [];
- 초기화 ex)var arr = [1, 2, 3];
- 어떤 자료형이든 저장이 가능함
- 배열 길이 반환 arr.length
- 접근 arr[index]
배열 사용하기
- 배열에 엘리먼트 추가하기
- .push(element): 배열 뒤에 element 추가
- .pop(): 배열 뒤에서 엘리먼트 삭제 후 리턴
- .shift(): 배열 앞에서 엘리먼트 삭제 후 리턴
- .unshift(element): 배열 앞에 엘리먼트 추가
- 배열 붙이기, 검색하기
- arr1.concat(arr2): arr1과 arr2를 붙임
- arr.indexOf(element): arr에서 element가 있는 첫 위치를 검색함
- arr.lastIndexOf(element): arr에서 element가 있는 마지막 위치를 검색함
- 문자열 split 함수
문자열을 구분자(separator)로 나눠서 각각을 담은 배열을 반환하는 함수
변수의 scope
- 선언한 변수가 유효한 지역을 의미.
- function scope
- 선언된 변수는 선언된 함수 안에서만 접근이 가능함
- 선언된 함수 안에서 선언된 함수(nested function)에서도 접근이 가능함
변수의 shadowing
- 함수 밖에서 선언된 같은 이름의 변수를 함수 안에서도 사용할 때
- 함수 밖의 변수는 잠시 가려짐
- 함수 안에서는 해당 함수에서의 변수를 사용함(함수 밖 변수의 값은 변하지 않음)
- 함수에서 빠져나오면 다시 해당 변수에 접근할 수 있음
- 함수 안에서만 값이 유지되어야 하는 경우
- 함수 안에서 var 키워드를 사용해서 선언한 뒤 사용
- 여러 함수에서 값이 유지되고 사용되어야 할 때
07 Sep 2018
|
JavaScript
object 객체 속성 접근 방법
var human = {age: 20, nationality: korea}
-
객체이름.속성이름
=> human.age = 20
-
객체이름[“속성이름”]
=> human[“age”] = 20
Math 관련 명령어
- Math.pow(A, b): A의 b승을 구함
- Math.sqrt(A): A의 제곱근을 구함
- Math.random(): 0~1 사이의 임의의 난수 발생
문자열 다루기
-
문자열 길이 알아내기
=> string.length
- 문자열 붙이기
- 특정 위치 문자열 알아내기
- 부분 문자열 구하기(대상 문자열의 연속된 일부 가져오기)
-
.substring(position1, position2)
position1 ~ position2 까지의 문자열을 반환하며, position2 생략시 문자열 끝까지 반환
-
.substr(position, length)
position에서부터 length 길이만큼의 문자열을 반환함. position이 음수인 경우, str.length - position 으로 동작함.
- 문자열 검색
- indexOf(str)
- lastIndexOf(str)