문제풀이 Feedback/Javascript

그 동안의 문제들 어려웠던 것 코드스테이츠 1~3주차

          1. 어려웠던 문제 1번

function plusMinus(score){
	if(score%10 <3){
	return '-'
}else if (score % 10 >7){
	return '+'
}else {
	return ''
	}
}

function convertScoreToGradeWithPlusAndMinus(score) {
	if (score > 100 || score <0){
	return "INVALID SCORE"
}else if (score === 100){
	return 'A+'
}
let num = score / 10
let grade
	if (num >= 9){
	grade ='A'
}else if (num>=8){
	grade = 'B'
}else if (num>=7){
	grade = 'C'
}else if (num>=6){
	grade ='D'
}else if (num>=0){
	grade = 'F'
}
	if (grade !== 'F') {
	grade = grade + plusMinus(score);
}
	return grade;
}

Feedback
 - 특별히 아래 if 를 쓸때 맨위에 정의해둔 함수값을 어떻게 갔다가 붙여야 하는지 고민을 했었다 그리고 소소한 오타가 있었고 else 값을 꼭 트루가 아닌 정해진 3가지가 있다면 나머지 두가지를 통과하지 못한 경우의 수였을때 그냥 false가 아닌 원하는 값을 리턴하도록 지정할수있었다.

     2. 어려웠던 문제 2번

  1. 아래것은 나의 해답

function isEitherEvenAndLessThan9(num1, num2) {
	let check1
	let check2
if(num1 %2 ===0 || num2 %2===0){
	check1 = true
}
if (num1 <9 && num2 <9 ){
	check2 = true
}
if (check1===true && check2===true){
	return true 
    }else {
return false}// 여기에 코드를 작성하세요
}

2. 레퍼런스 해답

function isEitherEvenAndLessThan9(num1, num2) {
	if (num1 < 9 && num2 < 9) {
	if (num1 % 2 === 0 || num2 % 2 === 0) {
	 return true;
 }
 return false; 
}
 return false; 
}

 - 기본적으로 if if를 두번 써야할때 어떻게 구성해야 할지를 잘 몰라서 이번 결과가 나왔다고 생각한다

 - if if 를 써야할때는 리턴값이 오는 위치에 if를 한번 더써서 한번 더걸러준다 그럼 결국 첫번째 if에서 나온값이 다시 if로 들어가 한번더 거쳐서 둘다 true 일경우 true를 반환하게 된다.

3. 어려웠던 문제 3번째

1. 나의코드

function findShortestOfThreeWords(word1, word2, word3) {
	let result = word1
	if (word1.length > word2.length){
	result = word2
} else if (word2.length > word3.length){
	result = word3
}
	return result // your code here
}

2. 레퍼코드

function findShortestOfThreeWords(word1, word2, word3) {
	let shortestWord = word1
    // 첫 번 째 글자가 2번째 글자보다 길 때 
  if (word1.length > word2.length) {
    shortestWord = word2 
    // word 2 랑 word 3을 비교 
  if (word2.length > word3.length) {
    shortestWord = word3 }
  } else { 
    // word1 과 word3 을 비교 
  if (word1.length > word3.length) {
    shortestWord = word3 }
    }
    return shortestWord 
    }

 - 내 코드의 문제점은 if문을 쓸때 리턴값이 한번 나오는것을 망각 한것이다 (정확히는 나의 코드도 문제는 없는것 같이 보여진다)

 - 내가 else if 를 썻으므로 결과값이 아래로 전달되지 않는다

4. 어려웠던 문제 4번째

function getAllLetters(str) {
	let result = []
	for (i=0; i<str.length; i++){
 	result.push(str[i])
}
return result // your code here
}

 - 여기서 모든 배열안의 요소를 나오게 하는것이였는데 push라는 것에 익숙하지 못했고

맨처음 변수를 선언할때에서 배열을 리턴해야하는데 문자열 '' 를 썻었고 i 를 선언을 해주지 않았다

그리고 반복문을 만드는 조건에 result = result.push(str[i]) 이렇게 넣으면 안된다 

result 자체가 빈배열일때 result.push(str[i]) 이렇게 쓰면 자동으로 result값이 할당되서 반환된다

5. 간단한 실수문제

1. 실수 1번

function getFullName(firstName, lastName) {

return firstName+' '+ lastName// 여기에 코드를 작성하세요

}

 - 공백을 하나를 줘야하는 상황에서 '' 하면 자동으로 공백이 생길줄알았는데 ' ' 이렇게 해야 생기는 것이였다

2. 실수 2번
 - 내코드

function computeAverageLengthOfWords(word1, word2) {

let first = word1.length

let second = word2.length

return (first + second)

}

 - 레퍼 코드

return (word1.length + word2.length) / 2;

3. 실수 3번

function isFalsy(anything) {

// 여기에 코드를 작성하세요

}

 

//falsy가 되는 값이 나왔을때 true 가 되면 되는것이다 그러므로

// 불리언을 넣었을때 반대가 되도록 하면 된다

// return !boolean(anything)

 

4. 실수 4번

function sum(n) {

let result = 0

for(let i=0; i <=n; i++){

result = result + i}

return result // your code here

}

여기서 {} 안에 들어가는 식을 입력하는걸 까먹었...

5. 실수 5번

function countCharacter(str, char) {
	let score = 0
	for( i=0; i <str.length ;i++){
	if (str[i] === char){
	score = score +1
	}
	}
return score // your code here
}

//문자열과 문자가 주어진다

// 함수는 문자열에서 문자가 몇개가 있는지 확인.

// 문자열을 배열로 변환

// char는 문자열로 맞을 때마다 +1 스코어가 되어야한다

// 조건문이 필요하다

= 여기서는 조건문안에 도출되는 결과를 입력할때 return 값을 넣어서 if 문이 끊기는 결과가 나왔다 

= 그래서 리턴을 빼고 단순 값을 입력해주는 걸로 고치니 정상 작동 ( return → score)

= 생각해보니 스코어라고 바꿔줘야 스코어에 계속 할당이 되면서 값이 올라가는군...

6. 실수 6번

function computeSumOfAllElements(arr) {
	let sum = 0
for(i=0; i < arr.length; i++){
	sum = sum + arr[i]
}
return sum // your code here
}

 - 자꾸 for 문을 구성할때 구분을 ;로 해야하는데 , 이걸로 해서 코딩이 오류가 발생