아틴
Atin
아틴
전체 방문자
오늘
어제
  • 분류 전체보기 (460)
    • Devlopment (246)
      • 정리 글 (20)
      • MicroServices (0)
      • Reactive, Concurrenc.. (12)
      • Java (44)
      • Spring (20)
      • C,C++,Ruby,Python (52)
      • Mobile (39)
      • Web (35)
      • Tip & Info (14)
      • Unit Test (7)
    • Infra (44)
      • OS (21)
      • RDBMS (13)
      • NoSQL&Cache (5)
      • AWS (4)
    • Computer Science (11)
    • Etc (156)

블로그 메뉴

  • Home
  • Guestbook

공지사항

인기 글

태그

  • 자바
  • CSS
  • Java
  • mysql
  • javascript
  • 전라도
  • Linux
  • Android
  • 여행
  • 안드로이드
  • jsp
  • Dungeons & Dragons
  • 던젼 앤 드래곤즈
  • Ruby on Rails
  • 정읍
  • 해킨토시
  • Python
  • C
  • 아이폰
  • TRPG

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
아틴

Atin

Devlopment/Java

달팽이 & 피보나치 수열 구현

2011. 6. 1. 11:07
반응형
n개의 수를 받아서 달팽이 형태로 출력하는 방법.
문득 이전에 로직이 생각나지 않은게 기억나서 만들었다. 나는 컴퓨터 앞에서 해야 로직이 생각난다. 망할;;
Source1은 달팽이, Source2는 피보나치 수열 재귀함수.

달팽이
피보나치같은 경우는 참 간단한데, 달팽이 같은 경우는 의외로 많이 시행착오를 겪었다.
수열 형태를 그려보고 x,y좌표에 따라서 계산해서 하려다가 점점 복잡해지고, 홀수, 짝수에 따른 오차까지 생각해야하나하고 머리가 복잡했는데 갑자기 간단히 풀려버렸다. 난 정말 시행착오 겪으면서 프로그래밍 하는게 제일 좋은것 같다.

1. 달팽이와 같은 형태로 배열을 이동하며 값을 입력한다.
2. 이동시 최대값이나 최소값을 넘기지 않으면서 다음값이 0이면 이동하고 아니면 방향을 바꾼다.


public class Snail {
public static void printSnail(int n){
int value[][] = new int[n][n];
int num = 1;// 증가값
int x = 0; // x축
int y = 0; // y축
while(num <= n*n){
//System.out.println("x : " + x + " | y : " + y + " | num : " + num);
value[x][y] = num++;
if(y == 0 && x != n-1 || x != n-1 && value[x][y-1] != 0 && value[x+1][y] == 0) x++;
else if(y != n-1 && value[x][y+1] == 0) y++;
else if(x != 0 && value[x-1][y] == 0) x--;
else if(y != 0 && value[x][y-1] == 0) y--;
}
// 출력
for(y=0;y<n;y++){
for(x=0;x<n;x++){
System.out.print("\t" + value[x][y]);
}
System.out.println();
}
}
public static void main(String[] args) {
printSnail(6);
}

}

[Source 1] Snail.java


피보나치 수열
f(n) = f(n-1) + f(n-2)
ex) 0 1 1 2 3 5 8
정말 간단한 식인데 재귀로 짜려니 처음 예외가 생각나지 않아서 고민했었다.

public class Fibonacci {
public static int fibonacci(int n){
if(n == 0 || n == 1) return n;
return fibonacci(n-1) + fibonacci(n-2);
}
public static void main(String[] args) {
for(int i=0;i<10;i++) System.out.println(i + " : " + fibonacci(i));
}
}

[Source 2] Fibonacci.java

반응형

'Devlopment > Java' 카테고리의 다른 글

String vs StringBuffer  (0) 2011.07.01
Aptana 플러그인  (0) 2011.06.13
싱글톤 패턴(Singleton Pattern)  (0) 2011.06.10
JavaHL (JNI) Not Available  (0) 2011.06.10
Builder Pattern  (0) 2011.06.09
JNI(Java Native Interface) - 객체  (0) 2011.06.01
두 개의 스택을 이용한 큐 구현  (0) 2011.05.31
JNI(Java Native Interface)  (0) 2011.05.31
System.out.println의 재정의  (0) 2011.05.13
[Linux, Window] JAVA로 로컬 IP 주소 얻어오는 방법  (0) 2011.05.09
    'Devlopment/Java' 카테고리의 다른 글
    • JavaHL (JNI) Not Available
    • Builder Pattern
    • JNI(Java Native Interface) - 객체
    • 두 개의 스택을 이용한 큐 구현
    아틴
    아틴

    티스토리툴바