fullstack

[C++] 간단한 Queue 만들기

자료구조

Queue는 Stack과 반대로 먼저 넣은 데이터가 먼저나오는 FIFO(First In First Out) 형태의 자료구조이다.

선형큐는 빈공간을 사용하면 모든자료를 한칸씩옮겨야하는 단점이 있기 때문에 원모양으로 이어지는 환형큐를 사용하는 것이 좋다.


가장 경량화된 환형큐를 구현해 보았다.


1
2
3
4
5
6
7
8
9
10
11
class myQueue {
private:
    int arr[maxQueueSize];
    int front, rear;
public:
    void init() { front = 0; rear = 0; }
    void enq(int item) { if(!isFull()) arr[++rear%maxQueueSize] = item; }
    int deq() { if(!isEmpty()) return arr[++front%maxQueueSize]; }
    bool isEmpty() { return front==rear?true:false; }
    bool isFull() { return (rear+1)%maxQueueSize==front?true:false; }
};



'자료구조' 카테고리의 다른 글

[C++] 이진 검색 구현  (0) 2015.11.16
[C++] Bubble Sort 구현  (0) 2015.11.12
[C++] 간단한 Stack 만들기  (0) 2015.11.11

[Unity3D] 다른 오브젝트의 함수를 호출하는 방법들

Unity

Unity에서 다른 GameObject의 함수를 호출하기 위한 방법은 여러가지가 있지만 그중 대표적인 방법 3가지만 소개하겠다.

 

 

 

우선 호출할 함수는 public으로 선언되어 있어야 한다.

Player라는 GameObject에 PlayerScript라는 Component가 있고 Func라는 함수를 호출하고 싶다면 

 

1
GameObject.Find("Player").GetComponent<PlayerScript>().Func();
 

 

이 방법이 가장 기본적인 방법이다. 

Player라는 이름을 가진 GameObject를 찾아 PlayerScript라는 Component의 Func 함수를 호출하였다.

 

1
GameObject.FindWithTag("GM").GetComponent<GMScript>().Func();
 

 

GameManager와 같은 유일한 태그를 가지는(GM이라는 태그는 GameManager에서만 사용해야한다) GameObject를 찾을 때에는 FindWithTag를 사용하면 더욱 좋은 퍼포먼스를 낼 수 있다.

 

1
GameObject.FindWithTag("GM").SendMessage("Func");
 

 

마지막으로 SendMessage라는 함수를 문자열로 호출하는 방법이 있다. 

위와같이 호출할 함수를 GameObject에 메세지만 던져주면 알아서 해당 함수가 있는 Component를 찾아서 함수를 호출해준다.

이 방법으로 함수를 호출할때는 호출할 함수가 public으로 선언되어 있지 않아도 된다.

편리한 만큼 약간의 성능저하가 있지만 신경쓸 정도는 아니라고 한다.

[C++] 간단한 Stack 만들기

자료구조

Stack은 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 LIFO(Last In First Out) 형태의 자료구조이다.


가장 경량화된 스택을 구현해 보았다.


1
2
3
4
5
6
7
8
9
10
11
class myStack {
private:
    int arr[maxStackSize];
    int idx;
public:
    void init() { idx = 0; }
    void push(int item) { arr[idx++= item; }
    int pop() { return arr[--idx]; }
    bool isEmpty() { return idx==0?true:false; }
    bool isFull() { return idx==maxStackSize?true:false; }
};




'자료구조' 카테고리의 다른 글

[C++] 이진 검색 구현  (0) 2015.11.16
[C++] Bubble Sort 구현  (0) 2015.11.12
[C++] 간단한 Queue 만들기  (0) 2015.11.12

[Java] D-Day 계산

알고리즘

D-Day를 계산해서 일수를 리턴하는 함수를 만들었다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public int calcdate(int _year, int _month, int _day) {
    try {
        TimeZone tz = TimeZone.getTimeZone ("Asia/Seoul");
        Calendar today = Calendar.getInstance (tz); 
        Calendar dday = Calendar.getInstance(tz);
 
        dday.set(_year, _month-1, _day);
 
        long cnt_dday = dday.getTimeInMillis() / 86400000;
        long cnt_today = today.getTimeInMillis() / 86400000;
        long sub = cnt_today - cnt_dday;
            
        return (int) sub + 1
    } catch (Exception e) {
        e.printStackTrace();
        return -1;
    }
}



#3 - TimeZone 오브젝트로 서울의 시간으로 적용하였다.

#9,#10 - 86400000(1일의 값) = 24시간 * 60분 * 60초 * 1000(1초값)

'알고리즘' 카테고리의 다른 글

[C++] 10진수 2진수 변환, 2진수 10진수 변환  (1) 2015.11.16

[JSP] Google App Engine으로 JSP 시작하기

Web

- Google App Engine을 쓰는 이유


Google App Engine은 PaaS(platform as a service) 종류의 클라우드 서비스이다.

PaaS는 개발자가 서비스를 개발 할 수 있는 안정적인 플랫폼과 그 플랫폼을 이용하는 응용 프로그램을 개발 할 수 있는 API까지 제공하는 형태를 말한다.

즉, Google App Engine을 이용하면 서버 설비와 관련된 모든 백엔드 작업에 신경을 쓰지 않고 서비스 개발에 집중할 수 있다.




- 준비사항


Google 계정

Java (현재까지는 7버전 이하로 지원)

Eclipse




- Google App Engine 시작하기


https://appengine.google.com/

다음 주소로 들어가 구글 계정으로 로그인한다.


새 프로젝트를 만든다.



여기서 프로젝트 ID가 만들 사이트 주소가 된다. ( http://'프로젝트 ID'.appspot.com )


프로젝트를 만들었다면 이클립스를 실행한다.


Help -> Install New SoftWare



Add를 누르고 다음과 같이 http://dl.google.com/eclipse/plugin/4.4 를 추가한다.

나열되는 항목들 중 Eclipse Plugin / AppEngine for Java SDK 설치



설치가 다 되었다면 App Engine 프로젝트를 생성한다.



프로젝트 이름을 설정하고 Browse 버튼을 클릭하여 아까만든 Google App Engine 프로젝트와 연동한다.



프로젝트가 만들어졌다면 Deploy 해보자



다음과 같이 잘 실행되는걸 볼 수 있다.


[C++] for문 두줄로 구구단 출력하기

Language/C++
그냥 심심해서 해본 for문 단 두줄로 구구단 출력하기

for문의 고정관념을 깨면 재밌는 코드가 많이 나온다.


1
2
3
4
5
6
#include <iostream>
void main()
{
    for(int i=1++i<10std::cout<<std::endl)
        for(int j=1; j<10std::cout<<i<<"*"<<j-1<<"="<<i*(j++)<<" ");
}



출력결과



'Language > C++' 카테고리의 다른 글

[C++] Reference  (0) 2015.11.29
[C++] namespace  (0) 2015.11.28
[C++] 인라인 함수 (Inline Function)  (0) 2015.11.28
[C++] 디폴트 매개 변수 (Default Parameter)  (0) 2015.11.28
[C++] 함수 오버로딩 (Function Overloading)  (0) 2015.11.28