티스토리 뷰
출저 : https://www.acmicpc.net/problem/3019
"아구가 맞니?"
해당 문제를 처음에는 모든 조각의 상대 위치를 3?4? 차원 배열로 만들어서 모든 경우에 수에 따라 검색하려고 했다. 하지만 조각의 위치를 정의하는데 너무 복잡하고 더러워서 다른 방법을 찾아봄...
아구가 맞는지를 탐색하는 방법이다. 아래와 같이 돌출된 부분에 값을 준다. 전체 높이가 같은지 확인한다.
아래 왼쪽 그림의 경우 높이는 2,1 이고 ㅓ 의 경우 돌출된 칸이 1칸 이므로 0,1 이렇게 한 후 높이와 이 값을 더한다.
왼쪽) 2 + 0 = 1+ 1
오른쪽 ) 2+ 0 = 1 + 1 = 2 + 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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; class Main { static int c,p; static int[] heights; public static void main (String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); c = Integer.parseInt(st.nextToken()); p = Integer.parseInt(st.nextToken()); heights = new int[c]; st = new StringTokenizer(br.readLine()); for (int i = 0; i < c; i++) { heights[i] = Integer.parseInt(st.nextToken()); } int res = 0; switch(p) { case 1: res = c + solve(new int[]{0,0,0,0}); break; case 2: res = solve(new int[]{0,0}); break; case 3: res = solve(new int[]{1,1,0}) + solve(new int[]{0,1}); break; case 4: res = solve(new int[]{0,1,1}) + solve(new int[]{1,0}); break; case 5: res = solve(new int[]{0,0,0}) + solve(new int[]{1,0}) + solve(new int[]{0,1,0}) + solve(new int[]{0,1}); break; case 6: res = solve(new int[]{0,0,0}) + solve(new int[]{0,0}) + solve(new int[]{1,0,0}) + solve(new int[]{0,2}); break; case 7: res = solve(new int[]{0,0,0}) + solve(new int[]{2,0}) + solve(new int[]{0,0,1}) + solve(new int[]{0,0}); break; } System.out.println(res); } static int solve(int[] h) { int res = 0; int size = h.length; for (int i = 0; i <= c-size; i++) { int gap = h[0] + heights[i]; boolean ok = true; for (int j = 0; j < size; j++) { if(h[j] + heights[i+j] != gap) { ok = false; break; } } if(ok) res++; } return res; } } | cs |
'Study > 알고리즘 문제풀이' 카테고리의 다른 글
SWEA 1245. 균형점 :: 돼지개발자 (0) | 2019.01.29 |
---|---|
백준 4920. 테트리스 게임 :: 돼지개발자 (0) | 2019.01.28 |
2018 카카오 1차 코딩테스트 오픈채팅방 :: 돼지개발자 (0) | 2019.01.23 |
프로그래머스 124 나라의 숫자 :: 돼지개발자 (0) | 2019.01.23 |
2018 카카오 1차 코딩테스트 프렌즈4블록 :: 돼지개발자 (0) | 2019.01.23 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday