[자바스크립트 문제풀이] 프로그래머스 -외계행성의 나이

효딩딩·2023년 3월 23일
0
post-thumbnail

[문제]

[정답]

  1. 내가 푼 풀이

-> 나의 의도 : index에 맞는 알파벳을 구하는 방식으로 접근하려 했다.

(1) ufo962 라는 변수에 배열로된 문자열 알파벳을 정의한다.
(2) ages 라는 변수에 age를 배열 문자열로 변경한다.(for문 돌리기 위함)
(3) for문을 ages의 length 미만까지 돌리고 index라는 변수에 문자열이였던 ages를 숫자로 변경해서 넣어준다.
(4) answer라는 문자열 변수에 ufo962[index] 알파벳 값을 넣어준다.

  1. 다른사람 풀이 적용 (1)

⭐️ 내가 몰랐던 사실!
나는 ufo962[index]의 index값을 구해야하는거라 숫자로 변경해주었는데 []에 들어가는것이 숫자만 가능한 줄 알았다.
문자열도 가능한 줄 이제 알게되었다...!!

그래서 내가 푼 풀이와 비교해보면 age를 string 까지만 만들어주고
ufo962[index에 맞는 알파벳만 가져올 수 있도록] 만들어주었다.

  1. 다른사람 풀이 적용(2)

map을 이용한 풀이이다. map은 배열에서만 사용가능하다.

궁금한 부분!
map((el) => "abcdefghij"[el])
console.log에 찍어봤더니 [ [ '2' ], [ '3' ] ] 이렇게 나오는데 그럼
"abcdefghij"[["2"],["3"]] 이런식이라는건데... 첨보는 식이여서 어떻게 여기서 2중 배열이 사라지고 해당하는 답인 "cd" 가 나올까..? 궁금해서

ChatGPT 에게 물어봤다!

실제로 [["2"],["3"]]와 같이 대괄호로 둘러싸인 인덱스를 사용하면 "2"와 "3"은 각각 문자열입니다. 문자열 인덱스 연산을 수행하면 문자열에서 해당 인덱스에 해당하는 문자를 반환합니다. 예를 들어, "hello"[2]는 "l"을 반환합니다.

따라서 [["2"],["3"]]는 사실상 ["2", "3"]과 동일한 표현입니다. 따라서 "abcdefghij"[["2"],["3"]]는 "abcdefghij"[2][3]과 동일합니다. 이를 통해 먼저 문자열 "abcdefghij"에서 2번 인덱스에 해당하는 문자 "c"를 가져온 후, "c" 문자열에서 3번 인덱스에 해당하는 문자 "d"를 반환하게 됩니다.

즉, 대괄호를 두 번 사용하면 실제로는 중첩된 인덱스 연산을 수행하는 것이며, 이를 이용하여 다양한 조작이 가능합니다. 하지만 일반적인 상황에서는 대괄호를 한 번만 사용하는 것이 더 간단하고 직관적입니다.

  • 이렇게 알려주었다.신기했다!!
  • 아! 자바스크립트에서만 가능하다.타입스크립트에선 안됨!

map은 잘 안써봤는데 많이 사용해봐야겠다.

profile
어제보다 나은 나의 코딩지식

0개의 댓글