[ 선형 자료구조 ] 배열 - OX 퀴즈 ✅ (문풀)

김수연·2022년 9월 19일
0

자료구조 / 알고리즘

목록 보기
11/16
post-thumbnail

# 내 풀이

// OX 퀴즈
function answer(mark) {
    let result = 0;
  
  	// 누적되는 점수를 저장할 변수 선언
  	let acc = 0;
  	for(let i = 0; i < mark.length; i++){
    	if(mark[i] != 0){
        	acc += mark[i];
        }else{
        	acc = 0;
        }
      	
   		result += acc;
    }
  
    return result;
}
  
  /* main code */
  let input = [
    // TC: 1
    [1, 0, 1, 1, 1, 0, 1, 1, 0, 0],
  
    // TC: 2
    [1, 1, 0, 1, 1, 0, 1, 1, 1, 1],
  
    // TC: 3
    [1, 1, 1, 1, 1, 0, 0, 1, 1, 0],
  ];
  
  for (let i = 0; i < input.length; i++) {
    console.log(`#${i + 1} ${answer(input[i])}`);
  }
  

# 강사님 풀이

// OX 퀴즈
function answer(mark) {
    let result = 0;
  
  	// 누적되는 점수를 저장할 변수 선언
  	let acc = 0;
  	for(let i = 0; i < mark.length; i++){
    	if(mark[i] != 0){
        	//acc += mark[i];
        	result += ++acc;
        }else{
        	acc = 0;
        }
   		//result += acc;
    }
  
    return result;
}
  
  /* main code */
  let input = [
    // TC: 1
    [1, 0, 1, 1, 1, 0, 1, 1, 0, 0],
  
    // TC: 2
    [1, 1, 0, 1, 1, 0, 1, 1, 1, 1],
  
    // TC: 3
    [1, 1, 1, 1, 1, 0, 0, 1, 1, 0],
  ];
  
  for (let i = 0; i < input.length; i++) {
    console.log(`#${i + 1} ${answer(input[i])}`);
  }
  

# 차이점

for(let i = 0; i < mark.length; i++){
	if(mark[i] != 0){
    	//acc += mark[i]; 
        result += ++acc;
    }else{
        acc = 0;
    }
   	
  	//result += acc;
}

# 다양한 연산자를 사용 : 단항 연산자

  • mark[i]값을 누적하는 대신 ++acc로 1 미리 더한 후 result 값에 할당했다.
  • value++ 와 ++value의 차이는 크기 때문에 점수를 부여받고 누적하는 경우엔 value++가 적합
  • 루프를 돌면서 인덱스를 1씩 업데이트 하는 경우 ++value가 적합
profile
길을 찾고 싶은 코린이 of 코린이

0개의 댓글