Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Method
- Data Structure
- Binary Tree
- Math
- dynamic programming
- implement
- Stack
- Tree
- database
- hash table
- array
- Matrix
- two pointers
- SQL
- 코딩테스트
- simulation
- Number Theory
- Class
- sorting
- 파이썬
- greedy
- geometry
- bit manipulation
- Binary Search
- 코테
- 자바
- string
- java
- 구현
- Counting
Archives
- Today
- Total
코린이의 소소한 공부노트
[프로그래머스/Lv.0] 안전지대 본문
1. Input
1) 지뢰가 매설된 지역의 지도 board
2) board는 정수 2차원 배열
2. Output
1) 안전지대의 칸 수
2) 지뢰를 기준으로 상, 하, 좌, 우, 대각선 4칸해서 최대 8칸이 위험지역(X표시)
3. Constraint
1) board는 n * n 배열
2) 1 ≤ n ≤ 100
3) 지뢰가 매설된 지역은 1로, 지뢰가 없으면 0을 표시
4) board에는 0 또는 1만 존재
4. Example
Input: board= -> Output: 16
[[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 0, 0, 0]]
설명: 25칸 중 1칸에 지뢰, 8칸이 위험지역이므로 25-1-8=16칸이 안전지대
5. Code
1) 첫 코드(2022/10/25)
int answer=0, rowlen=board.length, collen=board[0].length;
// X표시 = -1
for(int i=0 ; i<rowlen ; i++){
for(int j=0 ; j<collen ; j++){
if(board[i][j]==1){
int srow = i-1>0 ? i-1 : 0;
int erow = i+1<rowlen ? i+1 : rowlen-1;
int scol = j-1>0 ? j-1 : 0;
int ecol = j+1<collen ? j+1 : collen-1;
for(int k=srow ; k<=erow ; k++)
for(int l=scol ; l<=ecol ; l++)
if(board[k][l]!=1)
board[k][l] = -1;
} // if(board[i][j]==1)
} // for j
} // for i
// 안전지대(0)만 세기
for(int i=0 ; i<rowlen ; i++)
for(int j=0 ; j<collen ; j++)
if(board[i][j]==0) answer++;
return answer;
'코딩테스트 풀이 > JAVA' 카테고리의 다른 글
[프로그래머스/Lv.0] 로그인 성공? (0) | 2022.11.09 |
---|---|
[프로그래머스/Lv.0] 치킨 쿠폰 (0) | 2022.11.09 |
[프로그래머스/Lv.0] 연속된 수의 합 (0) | 2022.11.09 |
[프로그래머스/Lv.0] 다항식 더하기 (0) | 2022.11.02 |
[프로그래머스/Lv.0] 최댓값 만들기 (2) (0) | 2022.11.02 |