일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 파이썬 웹프로그래밍 장고
- passport.js
- 북마크앱
- 개발
- Algorithm
- ART_Cinema
- python
- 예술영화추천
- MyPick31
- Blog
- Exercism
- 장고 프로젝트 순서
- 장고 프로젝트
- 타사인증
- 장고 개발 순서
- Django
- 장고
- 프로젝트
- 북마크만들기
- 자바스크립트
- mongodb
- Bookmark
- til
- 알고리즘
- Django Blog
- Node.js
- JavaScript
- MYSQL
- 독립영화플랫폼
- join()
- Today
- Total
Juni_Dev_log
(200130_TIL) 'Matrix' 본문
▶ Matrix
(Problem)
Introduction
Given a string representing a matrix of numbers, return the rows and columns of that matrix.
So given a string with embedded newlines like:
9 8 7
5 3 2
6 6 7
representing this matrix:
1 2 3
|---------
1 | 9 8 7
2 | 5 3 2
3 | 6 6 7
your code should be able to spit out:
- A list of the rows, reading each row left-to-right while moving top-to-bottom across the rows,
- A list of the columns, reading each column top-to-bottom while moving from left-to-right.
The rows for our example matrix:
- 9, 8, 7
- 5, 3, 2
- 6, 6, 7
And its columns:
- 9, 5, 6
- 8, 3, 6
- 7, 2, 7
- 주어진 행렬의 rows 와 columns 의 측면의 따라서, 반환하는 결과가 달라진다.
- rows(가로)를 기준으로 봤을 때는, 9/8/7 ,5/3/2, 6/6/7 로 결과를 반환한다.
- columns(세로)를 기준으로 봤을 때는, 9/5/6 , 8/3/6 , 7/2/7 의 결과를 반환한다.
(Tip)
- Matrix라는 클래스를 만들어서 진행한다.
- Matrix라는 클래스에는, constructor / rows / columns 메서드들이 있다.
- Matrix 에는 숫자가 들어가고, \n 으로 행렬을 만든다.
- rows 일 때는, \n을 기준으로 split 했을 때, 요소 값이 된다.
- columns 일 때는, \n을 split으로 나눈 배열에서의 위치 값이 된다.
(Solution)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
export class Matrix {
constructor(matrix) {
this.matrixArray = matrix.split('\n').map((array) => array.split(" ").map((array) => parseInt(array)));
}
get rows() {
return this.matrixArray;
}
get columns() {
this.columnArray = this.matrixArray[0].map((col,index) => this.matrixArray.map((row) => row[index]));
return columnArray;
}
}
|
cs |
여기서 제일 중요한 것은, map() 과 split() , parseInt() 그리고 getter() 이다.
우선, map() 에 대해서 먼저 알아보자면,
javascript의 map() 이란..?
javascript에서 Array 나 JSON의 아이템 갯수만큼 반복을 돌며 데이터를 가공하여 무언가 작업을 수행해야 할 때가 있습니다. for문을 이용해도 되고... forEach도 있고 여러가지가 있으나 map() 이라는
2dubbing.tistory.com
yuddomack.tistory.com/entry/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-Array-map
자바스크립트 Array map
이번 글에서는 자바스크립트 Array(배열) 객체의 메서드인 map에 대해 작성하겠습니다. map은 forEach와 마찬가지로 Array의 각 요소를 순회하며 callback 함수를 실행합니다. 다만, callback에서 return 되는
yuddomack.tistory.com
javascript - 반복문(for, forEach/map, for..in/for..of)
javascript 반복문 (for문, forEach문, map문, for..in문, for..of문 비교) javascript에서도 일반적으로 프로그래밍 언어에서 제공하는 반복문인 for문을 사용할 수 있다. 그런데, 오픈 소스들을 ..
caileb.tistory.com
해당 사이트들을 읽어보면 알 수 있다시피
map()은 forEach와 for과 비슷한 기능을 하며, Array의 각 요소를 순회하며 callback 함수를 실행한다.
callback에서 return 되는 값을 배열로 만들어내는 것이다.
해당 문제에서는 set이 아닌, get()을 사용했기에, constructor에서 처리를 다하고 get으로 받기만 해야하는 상황이다.
(set() 내에는 파라미터로 value값을 전달할 수 있지만, get()은 하지못함. )
matrix로 주어지는 문자열을 배열로 바꾸고, 해당 배열에서 직접 뽑아쓰는 코드를 작성해야한다.
split()을 통해서, '\n' 과 ' '(띄어쓰기) 를 쪼개고, 해당 배열의 인덱스 값이 문자열로 나오기 때문에 parseInt() 로 Number값으로 바꿔준다.
get columns 에서의 문장이 제일 복잡한데, 해당 공식문서를 참고하면 이해가 가능하다.
1
|
arr.map(callback(currentValue[, index[, array]])[, thisArg])
|
cs |
매개변수
callback : 새로운 배열 요소를 생성하는 함수. 다음 세 가지 인수를 가집니다.
-currentValue : 처리할 현재 요소
-index(optional : 사용해도 되고 안해도 되고) : 처리할 현재 요소의 인덱스
-array(optional : 사용해도 되고 안해도 되고) : map()을 호출한 배열
-thisArg(optional : 사용해도 되고 안해도 되고) : callback을 실행할 때this로 사용되는 값
JavaScript / Object / String.split() / 문자열 분할하는 메서드
.split() .split()은 문자열을 분할하는 메서드입니다. 문법 string.split( separator, limit ) separator에는 분할의 기준을 넣습니다. 예를 들어 쉼표를 기준으로 분할할 때는 ',' 와 같이 합니다. limit로 최대 분
www.codingfactory.net
[JS] 자바스크립트 형변환 #2: string to number 등
# 자바스크립트 타입 변환(X to number) 문자열이나 불리언을 숫자로 형변환하는 방법은 4가지 정도다. 1) parseInt(정수 문자열) || parseFloat(실수 문자열) 2) Number(문자열 or 불리언) 3) + (..
curryyou.tistory.com
이렇게 split()과 parseInt()를 처리한 matrixArray를 get rows() 에서 그대로 return 한다.
columns 메서드 처리는, map()을 사용해서 새로운 배열로 변경처리하고 return 값으로 columnArray를 반환한다.
getter 과 setter의 차이점을 명확하게 알고 가는것 또한 굉장히 중요하다.
getter setter in ES6 :: 마이구미
이번 글은 getter와 setter를 다뤄본다. getter와 setter에 대한 자료는 이해할 수 없는 글들과 궁금증을 해결시켜주는 못하는 글들이 대부분이다. 도대체 왜 getter와 setter 굳이 왜 쓰는지? 왜 써야하는
mygumi.tistory.com
getter과 setter 등을 쓰는 가장 큰 이유는 "정보 은닉"이다. 직접적으로 코드를 작성하는 것이 아닌, 그저 받아오는 것에만 사용하기 때문에 굉장히 좋은 방법이다.
getter => 변수 x / 클래스에서 변수를 받아오는 것
setter => 변수 o / 클래스에서 변수를 가져올 수 있고, 설정할 수 있음
'CodingTest > Exercism' 카테고리의 다른 글
(200201_TIL) 'Reverse String' (0) | 2021.02.01 |
---|---|
(200131_TIL) 'Leap' (0) | 2021.01.31 |
(200128_TIL) 'Bank Account' (0) | 2021.01.28 |
(200127_TIL) 'Pangram' (0) | 2021.01.27 |
(200126_TIL) 'Space Age' (0) | 2021.01.26 |