<코드타카 3주 차 02.>

강민수·2021년 12월 19일
0

Day 2

문제

문자로 구성된 배열을 input으로 전달하면, 문자를 뒤집어서 return 해주세요.

  • 새로운 배열을 선언하면 안 됩니다.
  • 인자로 받은 배열을 수정해서 만들어주세요.
Input: ["h","e","l","l","o"]
Output: ["o","l","l","e","h"]
Input: ["H","a","n","n","a","h"]
Output: ["h","a","n","n","a","H"]

const reverseString = s => {
  return s.reverse()
};
console.log(reverseString(["H", "a", "n", "n", "a", "h"]))

인자로 받은 s값을 reverse()메서드로 뒤집어서 반환한다.

풀이 2

const reverseString = s => {
		//for loop으로 0부터 s의 길이의 반까지만 돌린다 (중간에 기준값이 있어야하니까)
    for (let i = 0; i < s.length/2; i++) {
				//reverseS에 s[i] 값을 넣고
        let reverseS = s[i];
				//s[i]는 첫번째 인덱스와 마지막인덱스
        s[i] = s[s.length-1-i];
				//마지막 인덱스를 바꿔준다
        s[s.length-1-i] = reverseS;
    }
return s;
};

풀이 3

const reverseString = s => {
    let temp;
    let start = 0;
    let end = s.length-1;
		//배열의 기준점을 찾는다
    while(end > Math.floor(s.length/2)){
        temp = s[start];
        s[start] = s[end];
        s[end] = temp;
				//끝부분에서 줄어들게끔
        end--
				//첫부분에서 늘어나게끔
        start++
    }
    return s;
  };

풀이 2와 3 둘다 반복문으로 기준값을 찾아 양 끝값을 바꿔주는 동일한 알고리즘이다.

데칼코마니를 생각해보면 이해하기가 좀 쉬울것 같다.

profile
개발도 예능처럼 재미지게~

0개의 댓글