Skip to content

Commit c06fd21

Browse files
authored
25.1.2 - 1week.배열
1 parent ecbe1b2 commit c06fd21

File tree

1 file changed

+98
-0
lines changed

1 file changed

+98
-0
lines changed

1week.배열

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
# [배열]
2+
3+
⏩ **푼 문제**
4+
기초
5+
- 배열 자르기
6+
- 배열 원소의 길이
7+
- 베열 회전시키기
8+
- 중복된 숫자 개수
9+
중급
10+
- 제일 작은 수 제거하기
11+
12+
☢️ **풀이과정**
13+
### 배열 자르기
14+
이 문제는 요구한대로 잘라야하므로, .slice() 매서드를 활용했음
15+
매개변수: numbers= 자르려는 배열, num1= 추출구간의 시작 인덱스, num2= 추출구간의 종료 인덱스
16+
핵심
17+
- .slice() 매서드
18+
- 전달 인자 2개를 받음
19+
- 시작 인덱스 num1 부터 종료 인덱스 바로 전(num2+1-1)까지의 배열을 전환함 / 즉, 종료 인덱스는 원소로 포함되지 X
20+
=> 따라서, 자르는 종료구간을 num2+1로 지정하면 명시된 종료구간(num2)까지 추출됨
21+
22+
작성코드
23+
```javascript
24+
function solution(numbers, num1, num2) {
25+
const result = numbers.slice(num1,(num2+1))
26+
console.log(result)
27+
return result;
28+
}
29+
30+
### 배열 원소의 길이
31+
이 문제는 문자열의 길이를 계산해주는 .map() 매서드를 활용했음
32+
매개변수: strlist = 문자열 배열
33+
핵심
34+
- .map() 매서드
35+
: strlist 배열의 문자열 길이 구하기를 수행한 새로운 배열을 반환함
36+
- str => str.length
37+
: str은 strlist 배열의 각 요소들을 순회하며 문자열 길이인 length를 계산하여 새로운 배열의 요소로 추가
38+
39+
작성코드
40+
```javascript
41+
function solution(strlist) {
42+
return strlist.map(str=>str.length);
43+
}
44+
45+
### 배열 회전시키기
46+
이 문제는 회전방향이 2가지인 오른쪽&왼쪽의 경우를 모두 실행하기 위해 매개변수를 하나 정의하고, 맨 앞/뒤 요소 추가/제거 등을 실행할 수 있도록
47+
.pop(), .unshfit(), .shift(), .push() 총 4가지 메서드를 활용했음
48+
매개변수: numbers= 배열(회전시킬 대상), direction= 'right' 혹은 'left' 문자열의 값만 가짐(회전방향)
49+
작성코드
50+
```javascript
51+
function solution(numbers, direction) { //매개변수 2개 정의
52+
if(direction=='right'){ //배열을 오른쪽으로 회전시킬 경우
53+
numbers.unshift(numbers.pop()) //배열의 끝요소(numbers.pop())를 제거하고, 이를 배열의 맨 앞에 추가(numbers.unshift())
54+
// 결과 : 배열이 오른쪽 한 칸 회전
55+
} else{ //배열을 왼쪽으로 회전시킬 경우
56+
numbers.push(numbers.shift()) //배열의 첫번째 요소(numbers.shift())를 제거하고, 이를 배열의 맨 뒤에 추가(numbers.push())
57+
} // 결과 : 배열이 왼쪽 한 칸 회전
58+
return numbers; //회전된 배열 반환
59+
}
60+
61+
### 중복된 숫자 개수
62+
이 문제는 같은 숫자의 개수를 세야하므로, 중복되는 숫자와 그 개수를 저장할 매개변수 2개를 정의하고, for문을 사용하여 문제의 배열을 순회하면서 if문을 사용해 중복숫자의 개수를 셀 수 있게 작성했음 / 따로 활용할 메서드가 없어보였음
63+
매개변수: array = 정수 배열, n = 중복되는 특정 숫자
64+
작성코드
65+
```javascript
66+
function solution(array, n){
67+
let answer = 0; //answer는 n과 동일한 값의 개수를 저장할 변수로, 초기값은 0으로 설정
68+
for (i =0; i < array.length; i++){ //array의 첫~끝요소까지 순회, i=0부터 시작해 배열의 길이(array.length)보다 작을때까지 반복
69+
if(array[i] == n){ // 현재 요소 array[i]가 숫자 n과 같으면
70+
answer++; // answer 값을 1증가(answer++)
71+
}
72+
}
73+
return answer; // n과 같은 숫자가 중복된 개수 저장한 answer 값 반환
74+
}
75+
76+
### 제일 작은 수 제거하기
77+
이 문제는 배열에서 가장 작은 값을 찾아 제거하고 새로운 배열을 반환해야함
78+
매개변수: arr = 배열
79+
핵심
80+
- ... 스프레드 연산자를 사용해 배열을 펼치고, 각 요소를 Math.min()에 전달
81+
- Math.min() 메서드
82+
: 숫자 중 최소값 반환
83+
- filter() 메서드
84+
: 주어진 조건을 만족하는 요소만 모아 새로운 배열 반환
85+
작성코드
86+
```javascript
87+
function solution(arr) {
88+
const min = Math.min(...arr); // 배열에서 최소값을 구함
89+
90+
if (arr.length === 1) { // 배열의 길이가 1이라면
91+
return [-1]; // [-1]을 반환 => (예외 사항)
92+
}
93+
return arr.filter(n => n !== min) // 최소값을 제외한 요소만 남겨 새로운 배열 반환
94+
95+
}
96+
97+
코딩테스트를 처음으로 본격적으로 풀다보니, 기초에서부터 시간이 꽤나 오래걸렸습니다.. 코드를 알고보면 쉬운 문제들도 있었고, 아직 모르는 매서드가 많아 문제에서 요구한 니즈에 맞는 매서드를 찾는데도 시간이 소요됐던 것 같아요.
98+
원래 목표는 기초2,초급2,중급1 였으나, 제 현상태를 자각하고 천천히 실력을 늘릴 계획입니다. 많은 리뷰 남겨주십쇼 저번주 긴 일정으로 차질이 생겨 늦게 제출해 죄송합니다. 다음주부터 제때 올리겠습니다!

0 commit comments

Comments
 (0)