Algorithm> 161. 활주로건설(SWExpert)
by BFine반응형
1. 활주로건설(SWExpert)
사용 알고리즘 : 시뮬레이션
2019/02/16 - [공부/Algorithm] -
115. 14890번 경사로 와 유사한 문제여서 다시 풀어 봤는데 생각이 잘나지 않았다.다시 참고해서 풀었는데 다시봐도 저런 사고를 할 수 있다는게 신기하고 더 열심히 해야겠다.
문제에 대한 접근&생각
- 활주로 가로 세로 모두 확인 해야함 -> 하나의 배열로!
- 경사로는 낮은 곳 높은 곳을 길이만 큼 설치 할 수 있음 -> 처리 조건!
내 코드
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 48 49 50 51 52 53 54 55 56 57 58 59 60 | import java.util.Scanner; public class Solution { static int n,x; static int[][] map; static int len; static int res; public static void main(String[] args) { /****************************** * 활주로의 가로 세로를 붙여 하나의 배열로 * 만들고 앞에서 부터 탐색하면서 * 경사로가 될수있는지 없는지 판단하여 * 그 갯수를 출력한다. *******************************/ Scanner sc = new Scanner(System.in); int T = sc.nextInt(); for(int t = 1; t <= T; t++) { n = sc.nextInt(); x = sc.nextInt(); map = new int[n+n][n]; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { map[i][j] = sc.nextInt(); } } for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { map[i+n][j] = map[j][i]; } } res = 0; solve(); System.out.println("#"+t+" "+res); } } private static void solve() { for(int i = 0; i < n+n; i++) { len = 1; boolean isPossible = true; for(int j = 0; j < n-1; j++){ int curent = map[i][j]; int next =map[i][j+1]; if(curent == next) len ++; else if(curent+1 == next && len>=x) len = 1; //앞이 높을 경우 else if(curent-1 == next && len>=0) len = 1-x; //앞이 낮을 경우 else { // 경사로 세울수 없는 경우 isPossible = false; break; } } if(len >= 0 && isPossible) res++; } } } | cs |
반응형
'공부(2018~2019) - 스킨변경전 > Algorithm' 카테고리의 다른 글
<Algorithm> 163. 벽돌깨기(SWExpert) (0) | 2019.04.10 |
---|---|
<Algorithm> 162. Puyo Puyo(BJO) (0) | 2019.04.09 |
<Algorithm> 160. 캐슬디펜스(BJO) (0) | 2019.04.09 |
<Algorithm> 159. 파이프 옮기기2(BJO) (0) | 2019.04.08 |
<Algorithm> 158. 요리사(SWExpert) (0) | 2019.04.05 |
블로그의 정보
57개월 BackEnd
BFine