[TIL] for문 (완전)정복!

오늘은 위코드 중간 시험 날!
생각한거 보다 어렵진 않았지만
너무 쉽게 풀었다 싶더니 역시나 다른 사람들 얘기하는거 듣다보니 잘못 푼거!!
다시 풀기도했고 생각보다 헷갈렸던 두 문제를 풀어보자!

문제 1

getFind 함수를 작성하세요.

문자와 문자열이 주어졌을때,
getFind 함수는 주어진 문자열에서 주어진 문자가 나타나는 첫번째 위치를 반환합니다.

Notes:
문자열의 첫번째 문자는 인덱스 값 0 을 가집니다.
만약 문자열에 해당 문자가 여러번 나타나면, 첫번째로 나타나는 위치를 반환해야 합니다.
만약 문자가 문자열에 존재하지 않는다면, -1 을 반환해야 합니다.

중요!!
indexOf 함수를 사용하지 마세요.

const output = getFind('a', 'I am a hacker')
console.log(output) // --> 2

처음에 대충 읽고 indexOf로 풀었더니 나중에 사람들 얘기하는거 듣고 부랴부랴 빼서 풀어보았다.
포인트를 집어 보자면 두 문자열을 비교하자,맞으면 거기서 끝내자
그러면 먼저 하나씩 비교하기 위해 for문으로 반복하고 맞았을 때 break시키면 되겠군!

function getFind(filter, sentence) {
  let result;
  for (i=0; i<sentence.length;i++) {
     if(filter == sentence[i]) {
       result = i;
       break;
     } else {
       result = -1;
     }
   } return result;
}

이렇게 풀었는데 맞나 모르겠다?(test는 통과됬으니 넘어가자)

문제2

find_longest_word 함수를 만들어 주세요.

주어진 리스트안에 있는 단어중 가장 긴 단어를 찾을수 있도록 함수를 완성해주세요.

console.log(find_longest_word(["PHP", "Exercises", "Backend"])) 
// --> "Exercises"

이문제도 처음 풀고 뭔가 이상해서 다시 풀어본 문제다.
배열의 길이를 .length로 구하고 그 길이대로 for문으로 반복시켜 가장 큰 값을 인덱스 했다.

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

이문제도 어쨋든 통과니까 맞겠지? 😩

뭔가 잘 정리하고싶었는데.. 아숩.. 뭔가 그래도 for문에 대해 80%는 익숙해진 느낌이랄까?
주말에는 css와 리팩토링, 그리고 리엑트를 좀 살펴봐야겠다.

좋은 웹페이지 즐겨찾기