본문 바로가기
🏋️‍♀️ Code Practice

[JS] 특정 수를 더한 배열 출력하기

by 슬용이 2022. 5. 10.

문제

twoSum함수에 숫자배열과 '특정 수'를 인자로 넘기면, 더해서 '특정 수'가 나오는 index를 배열에 담아 return해 주세요.
nums : 숫자 배열
target : 두 수를 더해서 나올 수 있는 합계
return : 두 수의 index를 가진 숫자 배열

예를 들어,
nums은 [4, 9, 11, 14] target은 13
nums[0] + nums[1] = 4 + 9 = 13 이죠?
그러면 [0, 1]이 return 되어야 합니다.

( 가정 : target으로 보내는 합계의 조합은 배열 전체 중에 2개 밖에 없다고 가정하겠습니다.)

풀이

const twoSum = (nums, target) => {

// twoSum함수에 숫자 배열과 '특정 수'를 인자로 넘기면,
// 더해서 '특정 수'가 나오는 index를 배열에 담아 return!
// target으로 보내는 합계의 조합은 배열 전체 중에 2개 밖에 없다고 가정한다.
  
// i랑 j, 특정 수 지정
// if : i + j = target -> index 배열 return[i, j]
  
  for (let i=0; i < nums.length-1; i++){
    for (let j=i+1; j < nums.length; j++){
      if(nums[i] + nums[j] === target){
      return [i, j];
	  }
    }
  }
}

console.log(twoSum([4, 9, 11, 14], 13));

 

처음에 놓친 것

  • nums.length-1 ! 
  • j = i + 1

      ⇒ 해당 부분은 i=0, j=0 / i, j < nums.length; 의 경우 if(!i = j)로 대체 가능하다

const twoSum = (nums, target) => {
  for (let i=0; i < nums.length; i++){
    for (let j=0; j < nums.length; j++){
      if(i!=j){
        if(nums[i] + nums[j] === target){
          return [i, j];
        }
      }
    }
  }
};

 

➕ JavaScript로 구구단 출력하기

구구단은 1~9단까지 존재.

i * j로 가정할 경우, i가 먼저 나열되어야 하므로 for(i)문 안에 for(j)문으로 쓸 수 있다.

 

아래 코드는 2단부터 나열되는 구구단이다.

for(let i=2; i<=9; i++) {
  for(let j=1; j<=9; j++) {
    console.log(i +' x ' + j + ' = ' + i*j)
  }
}

 

➕➕ 구구단 더 살펴보기

JavaScript 구구단을 살펴보다가 심화학습을 찾게 되었다.

아직 모르는 부분이 있어 살펴보려 한다.

var gugu = prompt("원하는 구구단을 입력해주세요");
  if(!isNaN(gugu)){
    for(var i = 1; i<10; i++){
      document.write(gugu+"x"+i+"="+(i*gugu)+"입니다.
");
    }
  }else{
    alert("숫자가 아닙니다.")
  }

// 출처 : <https://runcoding.tistory.com/16>

 

prompt()?

사용자가 텍스트 메세지를 입력할 수 있는 대화 상자를 띄우는 함수

let sign = prompt("당신의 별자리는 무엇입니까?");
if (sign.toLowerCase() === "전갈자리") {
  alert("와! 저도 전갈자리예요!");
}

 

prompt를 쓰는 방법은 다음과 같다.

sign = window.prompt(); // 빈 대화 상자를 엽니다.
sign = prompt(); // 빈 대화 상자를 엽니다.
sign = window.prompt("님 지금 기분 좋아요?"); // "님 지금 기분 좋아요?"가 보이는 창 오픈
sign = window.prompt("님 지금 기분 좋아요?", "네."); // "님 지금 기분 좋아요?"가 보이는 창을 띄우되 기본적으로 입력되어 있는 값은 "네."로 합니다.

 

isNaN() ?

isNaN() 함수는 어떤 값이 NaN인지 판별한다.

NaNJavaScript의 다른 모든 값과 달리 " ==, === "을 사용해 판별할 수 없다.

NaN == NaN, NaN === NaNfalse로 평가되기 때문에 NaN을 판별하는 함수 isNaN()이 사용되는 것이다.

function sanitise(x) {
  if (isNaN(x)) {
    return NaN;
  }
  return x;
}

console.log(sanitise('1'));
// expected output: "1"

console.log(sanitise('NotANumber'));
// expected output: NaN

 

코드 다시 살펴보기

const gugu = prompt("원하는 구구단을 입력해주세요");
// gugu 변수는 "원하는 구구단을 입력해주세요"라는 메세지를 띄우는 대화상자 함수이다.
if(!isNaN(gugu)){
// 만약에 gugu 대화상자를 통해 전달받은 값이 숫자이면
	for(var i = 1; i<10; i++){
	// for 문을 시작한다.
		document.write(gugu+"x"+i+"="+(i*gugu)+"입니다.</br>")
		// for 문은 대화상자를 통해 전달받은 숫자 값을 i로 구구단 i단을 출력한다.
	};
}else {
	alert("숫자가 아닙니다.")};
	// 만약 전달받은 값이 숫자가 아니면 "숫자가 아닙니다." 알림창을 띄운다.

 

 


 

카타(Kata)는 솔로 또는 쌍으로 연습 된 움직임의 자세한 패턴을 설명하는 단어

댓글