문제의 저작권은 SW Expert Academy에 있습니다.
https://swexpertacademy.com/main/solvingProblem/solvingProblem.do
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
[문제]
100 x 100 크기의 2차원 배열로 주어진 사다리에 대해서, 지정된 도착점에 대응되는 출발점 X를 반환하는 코드를 작성하라 (‘0’으로 채워진 평면상에 사다리는 연속된 ‘1’로 표현된다. 도착 지점은 '2'로 표현된다).
[제약 사항]
한 막대에서 출발한 가로선이 다른 막대를 가로질러서 연속하여 이어지는 경우는 없다.
[입력]
입력 파일의 첫 번째 줄에는 테스트 케이스의 번호가 주어지며, 바로 다음 줄에 테스트 케이스가 주어진다.
총 10개의 테스트 케이스가 주어진다.
[출력]
#부호와 함께 테스트 케이스의 번호를 출력하고, 공백 문자 후 도착하게 되는 출발점의 x좌표를 출력한다.
2. 정답 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Solution {
static int xpos;
static int ypos;
public static void main(String[] args) throws Exception {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int[][] ladder=new int[100][100];
for(int test_Case=1;test_Case<=10;test_Case++) {
br.readLine();
StringTokenizer st=null;
for(int i=0;i<100;i++) {
st=new StringTokenizer(br.readLine());
for(int j=0;j<100;j++) {
ladder[i][j]=Integer.parseInt(st.nextToken());
if(ladder[i][j]==2) {
xpos=i;
ypos=j;
}
}
}
while(xpos!=0) {
if((xpos-1)>-1&&ladder[xpos-1][ypos]==1) {
ladder[xpos][ypos]=5;
xpos=xpos-1;
}
if(((ypos-1)>-1)&&(ladder[xpos][ypos-1]==1)) {
ladder[xpos][ypos]=5;
ypos=ypos-1;
}
else if((ypos+1)<100&&(ladder[xpos][ypos+1]==1)) {
ladder[xpos][ypos]=5;
ypos=ypos+1;
}
}
System.out.printf("#%d ",test_Case);
System.out.println(ypos);
}
}
}
'노력만이 살길! > 알고리즘' 카테고리의 다른 글
[JAVA][SWEA][D3] 9229. 한빈이와 Spot Mart (0) | 2022.02.13 |
---|---|
[JAVA][SWEA][모의SW] 1952번 수영장 이용요금 (0) | 2022.02.10 |
[JAVA][SWEA] 1228 암호문1 (0) | 2022.02.08 |
[JAVA][SWEA] 1225 암호생성기 (0) | 2022.02.08 |
[JAVA][백준 2493] 탑 정답 (0) | 2022.02.08 |