타이젠(Tizen)?

타이젠(Tizen)은 휴대 전화를 비롯한 휴대용 장치를 주로 하며, TV, 냉장고와 같은 모든 전자기기에 포함을 목적으로 하는 오픈 소스 모바일 운영 체제이다. 타이젠은 리눅스 파운데이션의 리눅스 커널을 기반으로 하며, HTML5 및 C++ 기반으로 만들어진다. 또한 소프트웨어 개발 키트(SDK)를 통해 응용 프로그램을 개발하기 위해 필요한 각종 도구들과 API를 제공한다.

- Wiki, 위키백과 -




1. 타이젠의 정의

 타이젠 SDK는 네이티브 API와 웹앱 API를 모두 제공한다. 따라서 블루투스, NFC(Near Field Communication) 센서처럼 네이티브(Native) 기반 앱에서만 가능한 기능들을 웹앱에서도 지원한다. 또한 W3C 및 HTML5와 같은 다양한 표준을 준수해 플랫폼 독립적인 웹앱을 개발할 수 있고, C++ 기반 네이티브앱으로 개발하면 하드웨어에서 제공하는 최대한의 성능을 이끌어 낼 수 있다.


2. 타이젠 아키텍쳐


<그림 1> 타이젠 아키텍처 (출처 : 타이젠 공식 웹사이트)


타이젠 아키텍쳐는 다음과 같은 subsystem들을 포함하고 있다.

  • Web framework
타이젠에는 웹애플리케이션을 위한 웹 프레임워크가 있으며 최신 웹 기술을 지원한다. 특히 HTML5 API, 비디오, 오디오, 폼, 2D 캔버스, WebGL, CSS3, 웹소켓, 웹 워커 등과 같이 W3C 및 다양한 표준화 단체에서 정의한 표준이 포함돼 있다. 그리고 표준에서 제공하지 못하는 부족한 부분을 채우고자 블루투스, NFC, 알람, 메시징 등의 다양한 디바이스 API를 제공한다. 이와 함께 웹애플리케이션 실행, 라이프 사키르 관리, 접근 제어 등의 역할을 하는 웹 런타임(Web Runtime)도 제공한다.
  • Native framework
네이티브 프레임워크는 1만여개가 넘는 API를 제공하며 Base, 입출력, 앱, 보안, 그래픽, UI, 네트워크, 메시징, 소셜, 위치기반, 웹 등 네이티브 애플리케이션이 필요로 하는 다양한 기능을 지원한다.
  • Core
코어 프레임워크는 웹 프레임 워크 및 네이티브 프레임워크가 공통으로 필요로 하는 기본적인 기능을 제공한다.
  • Kernel
타이젠 아키텍처의 가장 하위 단인 리눅스 커널과 디바이스 드라이버로 구성돼 있다.

3. 타이젠의 특징
  • 개방형
타이젠의 가장 중요한 특징 중 하나는 오픈소스라는 것이다. 타이젠은 다양한 오픈소스 및 직접 개발된 코드로 이뤄져 있을뿐 아니라 타이젠 자체에 대한 소스 코드가 모두 공개돼 있다.
  • 다양한 종류의 애플리케이션 지원
타이젠은 HTML5, 자바스크립트, CSS3에 기반을 둔 웹애플리케이션뿐만 아니라 C++ 기반 네이티브 애플리케이션 그리고 이 둘을 융합시킨 하이브리드 애플리케이션까지 모두 지원한다.
  • 높은 HTML5 호환성
타이젠은 HTML5와 CSS5 등 W3C 표준 웹 기술을 적극 지원하고 있다.
  • 디바이스 API 지원
타이젠은 다양한 디바이스 API를 지원하여 애플리케이션 개발 과정에서 발생하는 불편함을 최소화하고 있다. 대표적인 디바이스 API로는 블루투스, PIM(Personal Infromation Management), NFC, 알람, 메시징, 전원 제어 등이 있다.
  • WebGL
  • 안드로이드 앱 호환
인프라웨어테크놀로지는 안드로이드 앱을 타이젠 플랫폼 앱으로 변환하는 PAG(Polaris App Generator) 프로그램을 개발했다. 안드로이드 SDK로 개발한 APK 파일을 타이젠 마켓에 등록하기만 하면 자동으로 타이젠 앱으로 변환되고, 사용자는 타이젠으로 별도의 변경과정을 거칠 필요 없이 마켓에서 다운로드해 사용할 수 있다.
  • 아나키 3D 엔진 : 모바일 3D 게임 엔진
  • 코코스2d-x 엔진
  • 크로스 카테고리


<그림 2> 타이젠의 크로스 카테고리 전략 (출처 : 2012 리눅스 코리아 포럼 타이젠 소개 자료)

  • 크로스 아키텍처
타이젠은 x86과 ARM 아키텍처를 모두 지원하는데, 타이젠 에뮬레이터는 x86을, 테스트용 디바이스는 ARM을 각각 지원한다.
  • 라이선스
다양한 오픈소스를 사용하는 만큼 타이젠은 복잡한 라이선스 정책의 영향을 받는다. 각 모둘에 따라서 GPLv2, LGPL, Apache, BSD, Flora 라이선스 등을 따르며, SDK의 경우에는 타이젠 SDK 라이선스라는 별도의 라이선스 정책을 준수해야 한다.
  • 보안
타이젠은 리눅스 커널 단에서 지원하는 Smack(Simplified Mandatory Access Control Kernel)을 적용해 인가되지 않은 데이터나 프로세스 접근을 막아 보안을 강화했다.


Posted by 밍쫑
,

프로그램 명: upstair                                                                                                            제한시간: 1 초


최대 2 칸 까지 오를 수 있을 때 오르는 방법의 가짓수를 출력 하는 문제이다.

그림은 n 이 4 인 경우의 예 이다.

  • 1 - 2 - 3 - 4
  • 1 - 2 - 4
  • 1 - 3 - 4
  • 2 - 3 - 4
  • 2 - 4

입력

n 은 30 이하의 양의 정수이다.

출력

오를 수 있는 가짓 수를 출력한다.

입출력 예

입력

4

출력

5


[문제 풀이]

최대 2칸을 오를 수 있다는 것은, 한 번에 1칸 또는 2칸을 올라갈 수 있다는 뜻이다.

  • 1칸씩 올라가기 : 1 - 2 - 3 - 4
  • 1칸 - 1칸 - 2칸 : 1 - 2 - 4
  • 1칸 - 2칸 - 1칸 : 1 - 3 - 4
  • 2칸 - 1칸 - 1칸 : 2 - 3 - 4
  • 2칸씩 올라가기 : 2 - 4 
이렇게 입력받은 수(n)만큼 올라갈 수 있는 방법의 가짓 수를 출력하는 것이 목표이다.

[소스코드 설명]
stair()의 n은 목표 계단 높이, now는 현재 계단 높이를 말한다.
문제 풀이에서도 설명을 했듯이, 한 번에 1칸 또는 2칸을 올라갈 수 있다는 뜻이기 때문에 

1칸 올라가는 경우(stair(n, now + 1))와 2칸 올라가는 경우(stair(n, now + 2))를 모두 구해서
목표 계단 높이(n)과 같을 때까지 재귀 호출을 하였다.


'알고리즘 > 재귀' 카테고리의 다른 글

[재귀] 유클리드 호제법  (0) 2014.05.15
[재귀] x의 y 거듭제곱  (0) 2014.05.15
[Doc.] 재귀 (recursion)  (0) 2014.05.15
Posted by 밍쫑
,

프로그램 명: euclid

제한시간: 1 초

두 수를 입력받아 최대공약수,최소 공배수를 구하는 프로그램을 작성하시오.

입력

두 양의 정수 a , b 가 입력으로 주어진다. (1 <= a , b <= 100 000)

출력

최대공약수,최소공배수를 한 줄에 출력한다. 두 수의 최대공약수 와 최소 공배수는 정수 범위(2^31 - 1)를 넘지 않는다.

입출력 예

입력

8 12

출력

4 24


[문제 풀이]


유클리드 호제법

유클리드 호제법(- 互除法, Euclidean algorithm)은 2개의 자연수 또는 정식(整式)의 최대공약수를 구하는 알고리즘의 하나이다. 호제법이란 말은 두 수가 서로(互) 상대방 수를 나누어(除)서 결국 원하는 수를 얻는 알고리즘을 나타낸다. 2개의 자연수(또는 정식) a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이 성질에 따라, b를 r로 나눈 나머지 r'를 구하고, 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수이다. 

- Wiki, 위키백과 -


1. 입력으로 두 수 m,n(m>n)이 들어온다.

2. n이 0이라면, m을 출력하고 알고리즘을 종료한다.

3. n이 m을 나누어 떨어지면, n을 출력하고 알고리즘을 종료한다.

4. 그렇지 않으면, m을 n으로 나눈 나머지를 새롭게 m에 대입하고, m과 n을 바꾸고 3으로 돌아온다.


최소공배수(lcm) = (A*B) / gcd(A, B);




'알고리즘 > 재귀' 카테고리의 다른 글

[재귀] 계단 오르기  (0) 2014.05.15
[재귀] x의 y 거듭제곱  (0) 2014.05.15
[Doc.] 재귀 (recursion)  (0) 2014.05.15
Posted by 밍쫑
,