728x90
문제
윤성이는 어렸을 적부터 수없이 몰려오는 적으로부터 기지를 방어하는 디펜스 유형의 게임을 플레이하는 것을 좋아했다. 그래서 간단한 디펜스 게임을 만들어 보려고 한다.
당신은 윤성이를 도와, 디펜스 게임 내에서 플레이어가 설치하는 유닛의 사거리를 나타내는 기능을 구현하면 된다.
입력
입력 첫째 줄에는 디펜스 게임의 맵 크기 N이 주어딘다. 맵은 N×N 크기의 2차원 형태이다. (N은 6이상 100이하의 짝수)
둘째 줄에는 유닛이 설치될 위치 X, Y와 유닛의 사거리 R이 주어진다. X는 행의 번호, Y는 열의 번호를 의미한다. (X, Y는 1이상 N이하의 자연수, R은 N/2이하의 자연수)
출력
예제 출력과 같이 유닛의 사거리를 나타내어 출력한다. (유닛의 사거리가 아무리 길어도 맵을 벗어날 수는 없다.)
예제 입력
8
4 5 3
예제 출력
0 0 0 0 3 0 0 0
0 0 0 3 2 3 0 0
0 0 3 2 1 2 3 0
0 3 2 1 x 1 2 3
0 0 3 2 1 2 3 0
0 0 0 3 2 3 0 0
0 0 0 0 3 0 0 0
0 0 0 0 0 0 0 0
예제 입력
6
2 3 3
예제 출력
3 2 1 2 3 0
2 1 x 1 2 3
3 2 1 2 3 0
0 3 2 3 0 0
0 0 3 0 0 0
0 0 0 0 0 0
#코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) throws Exception {
// Please Enter Your Code Here
Main myMain = new Main();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
int X = Integer.parseInt(st.nextToken())-1;
int Y = Integer.parseInt(st.nextToken())-1;
int R = Integer.parseInt(st.nextToken());
int[][] myArr = new int[N][N];
int rowPos = X;
int colPos = Y;
for(int x = 0; x < N; x++) {
for(int y = 0; y < N; y++) {
int absVal = Math.abs(rowPos-x) + Math.abs(colPos-y);
if(absVal <= R) {
myArr[x][y] = absVal;
}
}
}
for(int x = 0; x < N; x++) {
for(int y = 0; y < N; y++) {
if(x == X && y == Y) {
System.out.print("x ");
} else {
System.out.print(myArr[x][y] + " ");
}
}
System.out.println("");
}
}
}
|
cs |
반응형
'CS > 알고리즘_문제풀이(자바)' 카테고리의 다른 글
대표값 (0) | 2021.08.31 |
---|---|
class president (0) | 2021.08.31 |
rook (0) | 2021.08.29 |
maxofarr (0) | 2021.08.29 |
GCD LCM (0) | 2021.08.28 |