반응형
n개의 수를 받아서 달팽이 형태로 출력하는 방법.
문득 이전에 로직이 생각나지 않은게 기억나서 만들었다. 나는 컴퓨터 앞에서 해야 로직이 생각난다. 망할;;
Source1은 달팽이, Source2는 피보나치 수열 재귀함수.
달팽이
피보나치같은 경우는 참 간단한데, 달팽이 같은 경우는 의외로 많이 시행착오를 겪었다.
수열 형태를 그려보고 x,y좌표에 따라서 계산해서 하려다가 점점 복잡해지고, 홀수, 짝수에 따른 오차까지 생각해야하나하고 머리가 복잡했는데 갑자기 간단히 풀려버렸다. 난 정말 시행착오 겪으면서 프로그래밍 하는게 제일 좋은것 같다.
1. 달팽이와 같은 형태로 배열을 이동하며 값을 입력한다.
2. 이동시 최대값이나 최소값을 넘기지 않으면서 다음값이 0이면 이동하고 아니면 방향을 바꾼다.
[Source 1] Snail.java
피보나치 수열
[Source 2] Fibonacci.java
문득 이전에 로직이 생각나지 않은게 기억나서 만들었다. 나는 컴퓨터 앞에서 해야 로직이 생각난다. 망할;;
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);
}
}
피보나치 수열
f(n) = f(n-1) + f(n-2)
ex) 0 1 1 2 3 5 8
정말 간단한 식인데 재귀로 짜려니 처음 예외가 생각나지 않아서 고민했었다.
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));
}
}
반응형
'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 |