좋은 질문? 지적? 아무튼 감사합니다~ ▶ shift, spread 구문 배열
Post

좋은 질문? 지적? 아무튼 감사합니다~ ▶ shift, spread 구문 배열

안녕하세요~👋

오늘도 공부하는 무럭무럭 ✨성장몬✨ 입니다.


unshift() 메서드도 push() 메서드처럼 호출한 배열의 length 값을 반환해요!

※ 주의 ※ 메서드마다 반환하는 결과가 다르다는 것!


1
2
3
4
5
6
7
8
9
10
11
12
/* 오답노트 */
function solution(prev, join) {
	let 지난번에_처음발표자 = prev.shift();
	console.log(지난번에_처음발표자);
	console.log(prev);
	prev.unshift(join);
	console.log(prev);
	prev.push(지난번에_처음발표자);
	console.log(prev);

	return prev;
}
1
2
3
4
5
6
7
8
9
sudo
[ '임금' ]
[ '라떼', '임금' ]
[ '라떼', '임금', 'sudo' ]

아버
[ '광어', '안드로이드', 'siri' ]
[ '피카츄', '광어', '안드로이드', 'siri' ]
[ '피카츄', '광어', '안드로이드', 'siri', '아버' ]

저는 spread 구문을 몰라서 이렇게 수고롭게 코딩했는데…ㅎㅎ

프로젝트할 때 … 쓰긴 했는데 이걸 spread 구문이라고 하는지 몰랐어요!

😆 바보다!

이제라도 알면 됐죠!? 🤭


같이 성장하고 싶다면~?



📝 문제

개발자 원두가 속한 개발팀에서는 매주 돌아가면서 공부한 것을 발표하는 스터디가 있습니다.

발표 순서를 정하는 규칙은 아래와 같습니다.

  • 지난 발표에서 첫 번째로 발표한 사람은 마지막 순서로 발표하게 됩니다.
  • 새로 참여하는 사람은 첫 번째로 발표합니다.
  • 나머지 사람들의 발표 순서는 동일합니다.

지난번 발표한 사람들의 닉네임이 순서대로 담긴 배열 prev와

새로 참여한 사람의 닉네임이 문자열 join으로 주어질 때

이번 스터디의 발표 순서가 담긴 배열을 return하는 함수 solution을 완성해주세요.


제한 사항

  • join은 길이 1 이상 10 이하인 문자열입니다.
  • 배열 prev의 길이는 2 이상 10 이하입니다.


🙄 입출력 예

prevjoinreturn
[“sudo”, “임금”]“라떼”[“라떼”, “임금”, “sudo”]
[“아버”, “광어”, “안드로이드”, “siri”]“피카츄”[“피카츄”, “광어”, “안드로이드”, “siri”, “아버”]



초기화

1
2
3
4
5
6
7
8
9
10
function solution(prev, join) {
// 여기에 코드를 작성하세요.
	
	
}

solution(["sudo", "임금"], "라떼");
// ["라떼", "임금", "sudo"];
solution(["아버", "광어", "안드로이드", "siri"], "피카츄");
// ["피카츄", "광어", "안드로이드", "siri", "아버"];

💖 정답

1
2
3
4
5
6
7
8
9
function solution(prev, join) {
	const 지난번에_처음발표자 = prev.shift();
	return [join, ...prev, 지난번에_처음발표자];
}

solution(["sudo", "임금"], "라떼");
// ["라떼", "임금", "sudo"];
solution(["아버", "광어", "안드로이드", "siri"], "피카츄");
// ["피카츄", "광어", "안드로이드", "siri", "아버"];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/* 풀이 과정 (1/2) */
function solution(prev, join) {
	// [join, 나머지, 지난번에_처음발표자]
	// 나머지
	// 지난번에_처음발표자
	const 지난번에_처음발표자 = prev.shift();
	return [join, prev, 지난번에_처음발표자];
}
// [ '라떼', [ '임금' ], 'sudo' ]
// [ '피카츄', [ '광어', '안드로이드', 'siri' ], '아버' ]


/* 풀이 과정 (2/2) */
function solution(prev, join) {
	// [join, 나머지, 지난번에_처음발표자]
	// 나머지
	// 지난번에_처음발표자
	const 지난번에_처음발표자 = prev.shift();
	console.log([join, prev, 지난번에_처음발표자]);
	return [join, ...prev, 지난번에_처음발표자];
}
// [ '라떼', '임금', 'sudo' ]
// [ '피카츄', '광어', '안드로이드', 'siri', '아버' ]