분류 전체보기

동적 계획법을 이용하는 문제이다. 이 문제에는 총 세 가지의 규칙이 있다. 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음다음 계단으로 오를 수 있다. 연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다. 마지막 도착 계단은 반드시 밟아야 한다. 얼핏 보면, 움직일 수 있는 두개의 계단 중 큰 수를 가진 계단을 이용하는 문제로 볼 수 있다. 하지만, 이것은 탐욕 법을 이용한 문제 풀이이며, 해답이 아니다. 동적 계획법으로 모든 경우의 수를 살펴 보아야 한다. 연속하는 세 개의 계단을 밟을 수 없고, 마지막 계단은 무조건 밟아야 하기 때문에 배열을 이용하여 i번째 계단이 마지막이라 가정하고 하나씩 풀어 나가면..
· React
Screen 간 data전달 방법 Screen 이동은 navigation으로 한다는 내용은 저번 post에 언급했다. 만약 첫 번째 화면에서 두 번째 화면으로 data를 전달하려면 어떻게 해야 할까? 정답은 navigation을 이용하여 data를 전달하는 것이다. 저번 코드를 수정하여 data를 넘기는 예제를 해볼 예정이다. 첫 번째 화면에서 click을 하면 click 한 수를 보여준 뒤, 두 번째 화면에서 클릭한 수만큼의 아이콘을 출력해 보는 예제이다. 우선, 첫번째 화면의 코드이다. const First = ({navigation}) => { const [count, setCount] = useState(0); return ( setCount(count + 1)}> {count} navigatio..
· React
React Native Navigation application은 여러 개의 화면을 가지며, 화면 이동과 상호작용으로 동작한다. 그렇다면 react native에서는 어떤 식으로 화면 이동을 하는가?? 정답은 navigation을 이용하는 것이다. Navigation이란? 화면이동을 관리하는 것이라 생각하면 된다. 필요한 화면들을 정의하고 액션이나 이벤트에 반응하여 원하는 화면을 출력해주는 기능을 한다. 그중, stack navigation 은 화면을 stack과 비슷하게 관리하는 것이다. stack은 LIFO의 자료구조이다. 즉 마지막에 들어온 것이 가장 먼저 나가는 원리이다. 화면들을 한층 한층 쌓아 올리고 위 층부터 빠져나간다고 생각하면 된다. React Native Stack Navigation ..
깊이 우선 탐색 (Depth-First Search, DFS) 깊이 우선 탐색은 직관적인 그래프 순회 방식이다. 임의의 시작 노드를 설정하고 간선을 따라 이동해 가며 도달 가능한 모든 노드를 처리한다. 더 이상 갈 수 없는 노드까지 탐색한 후, 이전노드로 돌아가 그래프의 다른 부분을 탐색하기 시작한다. 방문했던 노드를 기록하므로 각 노드는 한 번씩만 처리된다. 1번 노드를 시작으로 정하고, 더 이상 갈 수 없을 때까지 순회한다. 즉 1 -> 2 -> 3 -> 5 순으로 방문한 뒤, 다시 1번 노드로 돌아간다. ( 2번 노드는 이미 방문한 노드이기 때문에 다시 방문하지 않는다. ) 그런 다음 방문하지 않는 노드인 4번 노드를 방문한다. DFS 구현 import java.util.ArrayList; impo..
· React
Props란? props는 변하지 않는 데이터이다. props의 데이터 흐름은 상위 Component에서 하위 Component로 이동한다고 볼 수 있다. 아래 코드를 예시로 보자. import React, { Component } from 'react'; import {View, Text} from 'react-native'; class PropsText extends Component { constructor(props){ super(props); } render(){ return({this.props.text}); } } const App = () => { return ( ); }; export default App; PropsText라는 임의의 class를 만들었다. 전달받은 props를 에 적용..
· React
Library react native에 원하는 기능을 지원하는 Component나 기능들이 없는 경우도 있다. 하지만, 개발자들이 이미 구현해 놓은 Component나 기능들이 있다. 따라서 우리는 프로젝트에 원하는 library(package라고도 함)를 설치하여 사용하면 된다. 설치를 원하는 프로젝트에 Terminal를 키거나 Terminal를 해당 프로젝트 디렉터리로 이동한다. npm install library이름 이 코드를 이용하여 library를 설치할 수 있다. (node.js가 깔려 있다면 문제없이 작동할 것이다.) npx react-native run-android 라이브러리를 알아보다 보면 npm과 npx를 모두 볼 수 있을 것이다. 처음에는 npx는 ios에서 사용하거나 오타인 줄 알..
· React
FlatList 는 시간이 지남에 따라 항목 수가 변경될 수 있는 긴 데이터 목록에 적합하다. ScrollView와는 달리 현재 화면에 표시된 요소만 렌더링 하며 모든 요소를 한 번에 렌더링 하는 것은 아니다. FlatList를 사용하기 위해서는 data와 renderItem이 필요하다. data는 rendering 할 요소들이며, data를 불러와 renderItem에 하나씩 전달한다. renderItem은 전달받은 data를 하나씩 render 한다. 다음은 FlatList를 구현한 코드이다. import React from 'react'; import { FlatList, StyleSheet, Text, View } from 'react-native'; const styles = StyleSheet..
동적 계획법의 예제이다. 우선, 몇 개의 정수를 처리할지 입력받은 후 입력받은 개수만큼의 입력을 받는다. 그 후, 입력받은 수들을 1, 2, 3의 합으로만 나타내는 방법의 총 개수를 구하는 문제이다. 예를 들어 4는 1+1+1+1, 1+1+2, 1+2+1, 1+3, 2+1+1, 2+2, 3+1로 총 7개이다. 규칙은 간단하다. 1과 2 그리고 3을 선택한다는 가정을하면 만들려는 수에서 선택한 수를 뺀 수를 만드는 경우의 수를 모두 더하면 되는 것이다. 1을 먼저 선택한 경우 1 + 3을 만드는 경우( 1+1+1, 1+2, 2+1, 3) => 4가지 2를 먼저 선택한 경우 2 + 2를 만드는 경우( 1+1, 2) => 2가지 3을 먼저 선택한 경우 3+ 1을 만드는 경우( 1 ) => 1가지 모두 더하면 ..
그래프의 표현 그래프를 표현하는 방법에는 여러 가지가 있다. 그래프의 크기가 어느 정도인지, 그리고 그래프를 어떻게 처리하는지에 따라 알맞은 자료 구조가 결정된다. 인접 리스트 인접 리스트(Adgacency list) 표현법은 그래프의 각 노드 x에 대한 인접 리스트, 즉 x에서 출발하는 간선이 있는 노드의 리스트를 관리한다. 인접 리스트는 그래프를 나타내는 가장 대중적인 방법이다. 인접 리스트를 ArrayList를 이중으로 이용하여 구현할 수있다. import java.util.ArrayList; public class GraphBasic { public static void main(String[] args) { ArrayList adj = new ArrayList(); for(int i = 0 ; ..
그래프(Graph)란? 그래프는 노드(node, 혹은 정점(vertex))와 그들을 잇는 간선(edge)으로 구성되어 있다. 경로(path)는 한 노드에서 그래프의 간선을 지나 다른 노드까지 가는 길을 의미한다. 경로의 길이는 경로에 포함된 간서의 개수이다. 예를 들어 1번 노드에서 5번 노드로 가는 길이가 3인 경로( 1 -> 3 -> 4 -> 5)가 나와 있다. 사이클(Cycle)은 처음 노드와 마지막 노드가 같은 경로를 의미한다. 예를 들어 1 -> 3 -> 4 -> 1로 구성된 사이클이 존재한다. 그래프의 모든 노드 간에 경로가 있는 경우를 연결 그래프(connected graph)라고 한다. 연결 그래프 연결 그래프가 아님 그래프의 연결된 부분을 컴포넌트(component)라고 표현한다. 연결 ..
hvv_an
'분류 전체보기' 카테고리의 글 목록 (57 Page)