지하철환승프로그램 만들고있는데요
큰재
우선 이 소스는 67300번 제나 분께서 올려진 소스를 제가 변형해서 이용하고 있는 점을 알려드립니다 import java.util.Scanner;
public class Floyd2{
int p[][];
public static void main(String[] args){
Floyd f = new Floyd();
int n = 25;
int m = 8000;
int w[][] = {{m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m},
{m,0,2,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m}, //고터
{m,2,0,2,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m},//반포
{m,m,2,0,2,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m},//논현
{m,m,m,2,0,2,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m},//학동
{m,m,m,m,2,0,2,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m},//강남구청
{m,m,m,m,m,2,0,2,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m},//청담
{m,m,m,m,m,m,2,0,2,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m},//뚝섬유원지
{m,m,m,m,m,m,m,2,0,2,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m},//건대입구
{m,m,m,m,m,m,m,m,2,0,2,m,m,m,m,m,m,m,m,m,m,m,m,m,m},//군자
{m,m,m,m,m,m,m,m,m,2,0,2,m,m,m,m,m,m,m,m,m,m,m,m,m},//중곡
{m,m,m,m,m,m,m,m,m,m,2,0,2,m,m,m,m,m,m,m,m,m,m,m,m},//용마산
{m,m,m,m,m,m,m,m,m,m,m,2,0,2,m,m,m,m,m,m,m,m,m,m,m},//사가정
{m,m,m,m,m,m,m,m,m,m,m,m,2,0,2,m,m,m,m,m,m,m,m,m,m},//면목
{m,m,m,m,m,m,m,m,m,m,m,m,m,2,0,2,m,m,m,m,m,m,m,m,m},//상봉
{m,m,m,m,m,m,m,m,m,m,m,m,m,m,2,0,2,m,m,m,m,m,m,m,m},//중화
{m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,2,0,2,m,m,m,m,m,m,m},//먹골
{m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,2,0,2,2,m,2,m,m,m},//태릉입구
{m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,2,0,m,m,m,m,m,m},//공릉
{m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,2,m,0,2,m,m,m,m},//화랑대
{m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,2,0,m,m,m,m},//봉화산
{m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,2,m,m,m,0,2,m,m},//석계
{m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,2,0,2,m},//돌곶이
{m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,2,0,2},//상월곡
{m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,m,2,0}, //월곡
};
String a[] = {고속터미널,반포,논현,학동,강남구청,청담,뚝섬유원지,건대입구,군자,중곡,
용마산,사가정,면목,상봉,중화,먹골,태릉입구,공릉,화랑대,봉화산,석계,돌곶이,상월곡,월곡};
f.p = new int[n][n];
f.floyd(n, w, f.p);
int i,j;
Scanner scan = new Scanner(System.in);
System.out.println(출발역의 번호를 입력하세요);
System.out.println([7호선]1: 고속터미널 , 2: 반포 , 3:논현 , 4:학동 , 5:강남구청 , 6: 청담 , 7: 뚝섬유원지 , 8:건대입구, 9:군자, 10:중곡, 11:용마산, 12:사가정, 13:면목, 14: 상봉, 15: 중화, 16: 먹골, 17: 태릉입구, 18: 공릉, 19: 화랑대, 20: 봉화산, 21: 석계, 22: 돌곶이, 23: 상월곡, 24:월곡);
i = scan.nextInt();
System.out.println(도착역을 선택하세요);
System.out.println([7호선]1: 고속터미널 , 2: 반포 , 3:논현 , 4:학동 , 5:강남구청 , 6: 청담 , 7: 뚝섬유원지 , 8:건대입구, 9:군자, 10:중곡, 11:용마산, 12:사가정, 13:면목, 14: 상봉, 15: 중화, 16: 먹골, 17: 태릉입구, 18: 공릉, 19: 화랑대, 20: 봉화산, 21: 석계, 22: 돌곶이, 23: 상월곡, 24:월곡);
j = scan.nextInt();
if(i != j){
System.out.printf(소요시간 : %2d | , w[i][j]);
System.out.printf(최단시간 이동 : %d, i);
f.path(i, j);
System.out.println( - + a[j-1]);
}
}
void floyd(int n, int w[][], int p[][]){
int i, j, k;
for(i = 0; i n; i++)
for(j = 0; j n; j++)
p[i][j] = -1; // path경로 저장할 배열 -1로 초기화
for(k = 0; k n; k++){
for(i = 0; i n; i++){
for(j = 0; j n; j++){
if(w[i][k] + w[k][j] w[i][j]){
p[i][j] = k; // Path 정점 저장
w[i][j] = w[i][k] + w[k][j]; // 최단경로 가중치 저장
}
}
}
}
}
void path(int q, int r){
if(p[q][r] != -1){ // 초기값이 아닐 때만
path(q, p[q][r]);
System.out.print( - + p[q][r]); // 출력
path(p[q][r],r);
}
}
}
제가 조금 수정해서 한번 작동시켜 보려고 하는데
컴파일도 잘 되고 돌아가기도 잘 돌아갑니다 근데
입력을 숫자로 해야되구요..
출력 부분에서 거쳐가는 경로 역이
역 이름이 나오는게 아니고 역이름에 지정된 숫자가 떠요
그리고 최종 도착지 역은 한글이름이 떠요
음 int로 설정되었다는 걸 알겟는데
실행을 한글로 하고싶거든요..
머리로는 알겟는데 실행시키려니 잘 몰겟네욤
경로 역 도 모두 한글이름이 뜨게 하고싶은데
어떻게하면 좋을까요??
또 추가기능으로
환승역을 표시하려면 어떻게 해야 하는지 도움 부탁드립니다..
-
앵초
int형 대신에 String형으로 for문으로 배열 하나 하나마다 equals()로 비교하면 되죠.