전체 글 204

튜플 (Python)

https://school.programmers.co.kr/learn/courses/30/lessons/64065 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(s): answer = [] tupleList = s[2:-2].split('},{') tupleList.sort(key=len) for tuple in tupleList: nums = list(map(int, tuple.split(','))) for num in nums: if not num in answer: answer.append(num) return answer 원..

[RN] 로그인/로그아웃 후 화면 이동

기능할 구현: 앱 접속 시 로그인이 되어있으면 메인 화면 보여주고, 아니라면 로그인 창 띄우기 + 로그아웃 시 바로 로그인 창 띄우기 (asyncStoarge로 토큰을 저장하여 로그인 유지를 했고, navigation을 사용해 화면 이동을 구현했다) 메인 화면에서 토큰을 얻고, 토큰이 없다면 로그인 화면으로 이동시킴 로그인 후 async-storage를 사용해 토큰 저장하고 로그인 유지 로그아웃 시 navigation reset을 사용하여 메인으로 이동시키며 화면 새로고침 (바로 로그인 창 띄우기 위해) // main const [token, setToken] = useState(''); useEffect(() => { getToken(); }, []) const getToken = async () =>..

Web/React-Native 2023.03.05

[RN] 갤러리 커스텀

리액트 네이티브에서 갤러리에 접근할 때, 모달창으로 띄워 커스텀하기 위해 react-native-cameraroll 라이브러리를 사용했다. https://github.com/react-native-cameraroll/react-native-cameraroll 위 라이브러리에서 CameraRoll.getPhotos 메서드를 사용하면 갤러리 이미지 정보를 가져올 수 있다. const {edges, page_info} = await CameraRoll.getPhotos({ first: 21, after: nextCursor, assetType: 'Photos', }); first 파라미터는 처음 가져올 이미지 정보 개수이고, after은 스크롤 시 다음 이미지 정보를 가져오기 위해 사용하였다. 그리고 사진만 ..

Web/React-Native 2023.03.01

[RN] 사용자 현재 위치 정보 얻기 / GeoLocation

RN에서 react-native-community/geolocation 라이브러리를 사용하면 사용자 현재 위치 정보를 쉽게 가져올 수 있다. https://github.com/michalchudziak/react-native-geolocation 가장 먼저 위치 정보를 얻기 위해 권한 설정을 해주어야 한다. // ios // react-native init 시 자동으로 생성되어 따로 추가할 필요 X // 만약 없다면, info.plist에 아래 코드 추가 후 cd ios -> pod install NSLocationWhenInUseUsageDescription // android/app/src/main/AndroidManifest.xml에 아래 코드 추가 // 정확한 위치 // 대략적인 위치 아래 코드는..

Web/React-Native 2023.02.21

[RN] 리액트 네이티브 카메라 및 갤러리 접근

카메라 접근은 react-native-image-picker, 갤러리 접근은 react-native-image-crop-picker 라이브러리를 사용했다. *** 갤러리 접근은 위치 좌표를 가져오기 위해 위 라이브러리를 사용했지만, 별다른 메타데이터가 필요하지 않으면 react-native-image-picker를 사용하면 된다. *** https://github.com/react-native-image-picker/react-native-image-picker https://github.com/ivpusic/react-native-image-crop-picker 사용 전 카메라 및 갤러리 접근을 위해 권한 설정을 해줘야 된다. // ios info.plist에 아래 코드 추가 후 cd ios -> po..

Web/React-Native 2023.02.19

[React] useState 배열, 객체 수정

state는 한 컴포넌트의 상태를 나타내는 것으로, 한 컴포넌트 안에서 유동적인 데이터를 다룰 때 사용되며 컴포넌트 안에서 데이터를 변경 가능하게 한다. 리액트의 함수 컴포넌트에서 state를 사용하기 위해서는 useState라는 hook을 사용해야 한다. useState는 state 변수의 초깃값을 매개변수로 전달하여 호출하고, 결괏값으로 배열을 반환한다. 그 배열은 [초기값이 들어간 변수, 값 변경이 가능한 함수]로 이루어져 있다. 그래서 useState hook을 사용할 때는 구조 분해 할당을 사용하여 변수에 값을 넣어준다. const [count, setCount] = useState(0); 만약 state 형태가 배열이거나 객체라면, 값 추가 및 수정시 알아야 할 것들이 있다. 값 추가 시, s..

Web/React 2023.02.19

[자료구조 with JS] 단일 연결 리스트 (singly linked list)

연결 리스트란 자바스크립트 내장 array처럼 문자열, 숫자 등 원하는 데이터를 저장하는 자료구조이다. array와의 차이점은 인덱스 유/무이다. 연결 리스트는 인덱스가 없어 array처럼 인덱스를 통해 값에 접근할 수 없다. 연결 리스트는 다수의 노드들로 구성되고, 각 노드는 하나의 데이터 엘리먼트를 저장하는데 각 노드들은 next 포인터를 통해 연결되어 있다. 즉, 각 노드들은 next 포인터를 통해 다음 노드의 정보를 저장하고 있다. (다음 노드가 없다면 null 저장) 연결 리스트에서 중요한 것은 head, tail, length이다. head는 연결 리스트의 시작 노드, tail은 연결 리스트의 마지막 노드, length는 연결 리스트의 길이이다. head 노드가 어디 있는지 알면, 그 노드로 ..

[알고리즘 with JS] 퀵 정렬 (quick sort)

퀵 정렬은 재귀를 통해 해결하기 가장 쉬운 방식 중 하나로 배열 길이가 0~1까지 분할하여 개별적으로 정렬되는 방식이다. 퀵 정렬은 pivot이라 부르는 단일 요소를 선택하여 수행하는 것이 특징으로, pivot보다 작은 수는 왼쪽으로, 큰 수는 오른쪽으로 옮기는 과정 반복하며 정렬해 나아간다. 아래는 배열이 주어지면 pivot을 정해 배열 속 요소를 재배치하는 함수이다. 매개변수로 배열, 시작 인덱스, 끝 인덱스를 받으며 pivot idx를 반환해 준다. // 배열이 주어지면 요소를 pivot으로 지정하여 배열 속 요소를 재배치하는 함수 function pivot(arr, start=0, end=arr.length-1) { const swap = (arr, idx1, idx2) => { [arr[idx1..

[알고리즘 with JS] 합병 정렬 (merge sort)

합병 정렬은 분할 + 정렬 + 병합으로 이루어진 정렬로, 주어진 배열이 단일 요소가 될 때까지 분할한 후 정렬해 가며 합병한다. 합병 정렬은 분할, 합병으로 나눌 수 있는데 배열을 합칠 때는 주어진 배열이 정렬되어 있어야 한다. 즉, merge(arr1, arr2)가 있다면 각 arr1, arr2는 정렬되어 있어야 한다. 가장 먼저 합친 배열을 담을 빈 배열이 필요하다. 그리고 while문을 돌며 각 배열의 첫 번째 요소끼리 비교를 시작하며 arr1의 첫 번째 요소가 더 작다면 해당 요소를 빈 배열에 넣고 인덱스를 증가시킨다. 위 과정을 반복하여 배열을 합병시키는 것이다. function merge(arr1, arr2) { let result = []; let i=0, j=0; while(i < arr1..