Javascript Assignment 헷갈렸던 문제

Doyoon Lee·2020년 8월 1일
0

Assignment (시험문제 4번) - 꼭 짚고 넘어가자!

"get_find" 함수를 작성하세요.
문자와 문자열이 주어졌을때,
"get_find" 함수는 주어진 문자열에서 주어진 문자가 나타나는 첫번째 위치를 반환합니다.
Notes:
문자열의 첫번째 문자는 인덱스 값 0 을 가집니다.
만약 문자열에 해당 문자가 여러번 나타나면, 첫번째로 나타나는 위치를 반환해야 합니다.
만약 문자가 문자열에 존재하지 않는다면, -1 을 반환해야 합니다.
indexOf 함수를 사용하지 마세요.
const output = get_find('a', 'I am a hacker')
console.log(output) // --> 2

.charAt()

syntax

strName.charAt(i) // i 는 index 

charAt 은 스트링에 쓸 수 있는 메소드이다.

위와 같은 문법으로 쓸 경우 i 인덱스 값에 해당하는 '글자'를 뽑아준다.


.includes()

syntax

str.includes(searchString[, position])

includes 메소드는 해당 스트링 내에 그 글자가 있는지 찾아보고,

Boolean 값을 리턴한다. (true / false)

사용 예시

'Blue Whale'.includes('blue')  // returns false

중요한 점은 includes 는 글자의 uppercase, lowercase 구분을 한다는 것이다.



내가 처음 적은 코드

function get_find(a, str) {
let result = -1; // result 정의 
  if(false) { //만약에 문자열에 없으면
  return result; // result를 리턴 (-1)
  } else { 
    for (let i = 0; i < str.length; i++){ // for문을 돌릴것 i 값 길게 
      if (str.charAt(i) === a) { // i 는 a(특정 글자) 가 일치하면
        result = str.charAt(i); // 결과에 그 애를 임명 . 
        break;  
      } 
    } return result;
  }
}

get_find('h', 'I am a hacker');

문제 로직 풀때 고민해야할점

  • string 에서 자꾸 array 에 담아서 그 다음에 그걸 또 뽑으려고 하는데 그러지 말자!
  • charAt() method 는 string 안에서 길이와 인덱스로 뽑을 수 있다는 점 기억하자!

Solution

function get_find(char, str) {
let result = -1; // result 정의 ( -1)
  for (let i = 0; i < str.length; i++){ // for 문으로 모든 글자 확인
  if (str.charAt(i) === char) { // 뽑아온 캐릭터가 그 글자랑 일치하는가?
        result = i; // 일치하면, 결과에 그 애를 임명 . 
        break;  // 더이상 for 문을 돌 필요 없고 나간다.
    }
  }
  return result;
}

get_find('h', 'I am a hacker');
// 위의 if 문은 글자를 비교한거고
// 밑의 result = i 는 숫자 인덱스를 갖다 넣었다는점. 어차피 인덱스가 필요한거기 때문에.
  1. result 를 일단 정의하고 시작한다. 그럼 if를 돌릴때 변동되지 않은 result 가 밑에서 나올거기 때문에.
  2. result 를 상대로 string의 길이만큼 되는 for문을 돌린다.
  3. for 문을 통해서 각각의 인덱스를 증가시키면서 charAt 메소드를 통해서 하나하나의 글자를 가져올것이다.
  4. 그 안에 if 문이 있다. 가져온 글자를 내가 넣은 char 과 같은지 비교한다.
  5. 글자가 같다면, result 에 그 i 인덱스(숫자)를 임명한다. result 는 이제 그 찾은 글자의 인덱스가 된다.
  6. 우리가 원하는 결과는 인덱스 번호였기 때문에, 원하는 바를 이뤘으니 break 로 for문을 끝내고 나간다.
  7. 변화된 result 를 뽑는다.

주의할 점

→ 혼자서 다시 풀어봤는데 break 위치가 헷갈렸다. if 문 안에다가 써줄것!



Assignment (시험문제 5번)

function find_longest_word (arr) {
 let longest = "";
 for (let i = 0; i < arr.length; i++) {
   if (arr[i].length > arr[i++].length) {
     longest = arr[i];
   } else {
     longest = arr[i++];
   }
 }
 return longest;
}

find_longest_word(["PHP", "Exercises", "Backend"]);

0개의 댓글