[self-study]알고리즘 연습문제_배열

윤성해·2023년 3월 1일
0

알고리즘

목록 보기
1/22
post-thumbnail

배열의 기능

1. 문제
주어진 fruits 배열에서 마지막 요소를 꺼내 newFruits에 넣어주세요.
❗️ length, push를 이용하여 문제풀기

let fruits = ["사과", "바나나", "파인애플"]

풀이과정
소요시간 (10분)

  1. push 쓰는 방법을 몰라서 처음에 방황했음.
    -> 추가해줄 변수명.push() 하면 됨!
  2. 내가 한 방법은 아래와 같고, 파인애플이 newFruits에 잘 들어갔다.
let newFruits = push(fruits[2])
  1. 답안을 보니 length-1 을 사용하여 마지막 객체를 가져온 것을 확인했다.
newFruits.push(fruits[fruits.length-1])
  1. 굳이 length-1를 해야하는건지 찾아보니, 나처럼 정수로 객체를 가져와도 되긴 하지만, 길이는 달라질 수 있기 때문에 고정된 정수로 마지막 요소에 접근하면 안된다고 한다. 아래와 같이 배열의 길이(length)에서 1을 뺀 값이 항상 배열 마지막 요소의 Index가 되기 때문에 마지막 요소에 접근할 때는 length-1 해주기!!
    도움 받은 포스팅

궁금한 점

  • newFruits.push(fruits[fruits.length-1]) 여기서 왜 () 안에 프룻을 넣고 대괄호에 length를 넣는거지?.. 그냥 newFruits.push([fruits.length-1]) 하면 안되나?

    안되는군.

2. 문제
학생들의 이름이 담긴 students 배열이 있습니다.
배열에서 2번 째 요소까지의 데이터들을 뽑아 새로운 배열을 만드세요.
❗️slice를 이용하여 문제풀기

let students = ["철수", "영희", "훈이", "짱구", "유리"]

풀이과정
소요시간(10분)

  1. slice 알아보기
    slice는 첫번째 인자로 넘어온 시작 인덱스가 가리키는 값은 포함하지만, 두번째 인자로 넘어온 종료 인덱스가 가리키는 값은 포함하지 않는다는 것이 특이했다. students.slice(0,3) 에서의 0은 앞에서부터, 3은 뒤에서부터 카운팅 한 것. 길이를 만들어 주는구나 하고 이해했다. 여기서 index값 3은 짱구임!!
    도움 받은 포스팅
    MDN

3. 문제
상수 number는 핸드폰 번호가 담긴 문자열입니다.
해당 문자열을 "010", "1234", "5678"로 나눈 배열을 만드세요.
❗️slice 이용하기.

상수 number는 핸드폰 번호가 담긴 문자열입니다.

예상결과

console.log(arr) // ["010", "1234", "5678"]

풀이과정
소요시간(20분)

  1. slice로 010,124,5678 을 나누기는 했지만 합치니까 '01012345678' 다 붙어버렸다.. 🙄 무조건 맞을거라 생각했는데 틀렸음.
  2. 레퍼런스 코드를 보니, push를 이용했음
const number = "01012345678"

Case 1
let arr = []

arr.push(number.slice(0,3))
arr.push(number.slice(3,7))
arr.push(number.slice(7,11))

Case 2
let arr =[number.slice(0,3), number.slice(3,7), number.slice(7,11)]]

위 코드를 보니, 내가 한것처럼 종료 인덱스를 꼭 뒤에서부터 세지 않아도 되나보다! 시작 인덱스는 포함, 종료인덱스는 미포함 이라는 것만 기억하면 되겠다.

❗️'01012345678' 이렇게 붙은걸 나누고 싶어서 아래처럼 쓰니까 결과값이 다 스트링으로 나왔다ㅋㅋㅋㅋㅋㅋ "" <- 나누는거 아님..스트링임..기억하기..!

arr = ["newArr1" + "newArr2" + "newArr3"]
['newArr1newArr2newArr3']


다시 작성해본 코드. 해결완료! 에러는.. 자꾸 괄호 안닫아서 ㅎㅎㅎ

profile
Slow and steady wins the race.

0개의 댓글