반응형
요즘 하고있는 JAVA의 문제 중 달팽이 관련 문제이다.
음....... 원래라면 내가 풀어야겠지만 사정도 있고 대가리에 든것은 없고! 이리저리해서 못풀었다. 관련 알고리즘에 가까이 다가가기는 했지만 아쉽게도 그것을 공식화 시키지는 못했다.
그래서 받은 소스를 보고 분석을 했다. -_-;;;
내가 생각했던 알고리즘이지만 난 만들지 못했던것이다. 에휴~ 마빡이 굳어가지고는...
여늩 달팽이 소스란 이제 막 프로그래밍을 시작하는 사람들이 한번씩 거치는 과정으로 C로 할때는 어거지로 풀었지만 이번것을 보고 확실히 이해했다.
그리고 예전에는 "스스로 풀어야한다!" 라고 생각했었지만 지금은 뭐.. 빠르게 배워가는게 더욱 낫다 라는 생각이다. "스스로 붙잡고 하루를 보내는 것보다는 아는사람에게 한번 물어보고 그것을 내것으로 만들면 된다"는 그런 이론이다.
그래서 돈 벌면 학원이 이빠시 다닐 계획이다. 지금은 돈이없어서 한달반 끊었지만 말이다.
잡설은 여기서 그만 하고 소스를 보자!
[원래는 주석이 없었지만 공부한다는 생각으로 달았다. 주석부분은 마지막에 접어놨음]
※혹시 이해가 안되는 사람은 보고 이해하자. 잘못된 부분의 태클을 환영합니다.
class Snail{
public static void main(String[] args){
int r=0, c=-1, sw = 1, f=5 ,n =0;
int[][] d = new int[5][];
for(int i=0; i<d.length; i++) d[i] = new int[5];
while(f != 0){
for(int i=0; i<f; i++){
c += sw;
n++;
d[r][c] = n;
}
f--;
for(int i=0; i<f; i++){
r += sw;
n++;
d[r][c] = n;
}
sw *= -1;
}
for(int i=0; i<d.length; i++){
for(int j=0; j<d[i].length; j++){
if (d[i][j]>=10) System.out.print(d[i][j] + " ");
else System.out.print(d[i][j] + " ");
}
System.out.println();
}
}
}
public static void main(String[] args){
int r=0, c=-1, sw = 1, f=5 ,n =0;
int[][] d = new int[5][];
for(int i=0; i<d.length; i++) d[i] = new int[5];
while(f != 0){
for(int i=0; i<f; i++){
c += sw;
n++;
d[r][c] = n;
}
f--;
for(int i=0; i<f; i++){
r += sw;
n++;
d[r][c] = n;
}
sw *= -1;
}
for(int i=0; i<d.length; i++){
for(int j=0; j<d[i].length; j++){
if (d[i][j]>=10) System.out.print(d[i][j] + " ");
else System.out.print(d[i][j] + " ");
}
System.out.println();
}
}
}
반응형
댓글