전체 글

증가하는 수열을 만드는 문제이다. 기준을 정해서 그 부분까지의 가장 긴 부분 수열을 구하는 문제로 분할할 수 있다. 즉 i번째까지의 가장 긴 증가하는 수열을 저장해놓고 계속해서 사용하며 마지막까지 수열을 구해 나간다. 다음은 Java로 작성한 코드이다. import java.util.Scanner; public class partSequence { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int x = scan.nextInt(); //수열 저장 int arr[] = new int[x]; //가장 긴 증가하는 수열의 수 int solution[] = new int[x]; //입력을 받는 동시에 soluti..
· React
React Native State react native ver16.8 이전의 버전에서는 state를 사용하려면 class형 Component를 사용해야 했다. 즉, 함수형 Component에서는 state를 사용할 수 없었다. state는 해당 Component가 가지고 관리하는 값들이기 때문에 객체 형태의 class형 Component에서만 사용하도록 통제되어 있었다. 하지만, ver16.8 이상에서는 함수형 Compnent에서도 state를 사용할 수 있게 되었다. 이를 Hooks라고 한다. Hooks 사용법 import React, {useState} from 'react'; import {Text, TouchableOpacity, View} from 'react-native'; function ..
동적 계획법을 이용하는 문제이다. 이 문제에는 총 세 가지의 규칙이 있다. 계단은 한 번에 한 계단씩 또는 두 계단씩 오를 수 있다. 즉, 한 계단을 밟으면서 이어서 다음 계단이나, 다음다음 계단으로 오를 수 있다. 연속된 세 개의 계단을 모두 밟아서는 안 된다. 단, 시작점은 계단에 포함되지 않는다. 마지막 도착 계단은 반드시 밟아야 한다. 얼핏 보면, 움직일 수 있는 두개의 계단 중 큰 수를 가진 계단을 이용하는 문제로 볼 수 있다. 하지만, 이것은 탐욕 법을 이용한 문제 풀이이며, 해답이 아니다. 동적 계획법으로 모든 경우의 수를 살펴 보아야 한다. 연속하는 세 개의 계단을 밟을 수 없고, 마지막 계단은 무조건 밟아야 하기 때문에 배열을 이용하여 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를 에 적용..