티스토리 뷰
출저 : https://www.acmicpc.net/problem/15685
"아이디어가 필요한 구현문제"
삼성 기출 문제.
각 세대를 더해 갈 수록 기존에 찍었던 선들을 모두 왼쪽으로 돌려서 다시 그려준다. 초기에 생각만 잘하면 쉽게 풀릴 문제
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 | import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; class Main { static int N; static int map[][] = new int[101][101]; static List<Integer> list = new ArrayList<>(); static int dx[] = {1,0,-1,0}; static int dy[] = {0,-1,0,1}; public static void main (String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); N = Integer.parseInt(br.readLine()); for (int i = 0; i < N; i++) { StringTokenizer st = new StringTokenizer(br.readLine()); int x = Integer.parseInt(st.nextToken()); int y = Integer.parseInt(st.nextToken()); int d = Integer.parseInt(st.nextToken()); int g = Integer.parseInt(st.nextToken()); // 0 세대 의 방향 list.add(d); // 각 세대 별로 for (int j = 0; j < g; j++) { int size = list.size(); // 이전 방향들을 모두 시계 방향으로 회전하여 다시 list에 저장 for (int s = size-1; s >= 0; s--) { int nd = (list.get(s) + 1) % 4; list.add(nd); } } // check map[y][x] = 1; // 기존에 저장한 방향에 따라 초기좌표에서 계속 움직이며 마킹한다. for(int dir : list) { x += dx[dir]; y += dy[dir]; map[y][x] = 1; } list.clear(); } // 맵에서 1로 마킹된 4각형을 찾아 개수 리턴 System.out.println(count()); } static int count() { int res = 0; for (int i = 0; i < 100; i++) { for (int j = 0; j < 100; j++) { if(map[i][j] == 1 && map[i][j] == map[i][j+1] && map[i][j] == map[i+1][j] && map[i][j] == map[i+1][j+1]) res++; } } return res; } } | cs |
'Study > 알고리즘 문제풀이' 카테고리의 다른 글
백준 1149. RGB거리 :: 돼지개발자 (0) | 2019.02.01 |
---|---|
백준 1003. 피보나치 함수 :: 돼지개발자 (0) | 2019.02.01 |
백준 1932. 정수 삼각형 :: 돼지개발자 (0) | 2019.01.31 |
백준 10026. 적록색약 :: 돼지개발자 (0) | 2019.01.31 |
백준 15684. 사다리조작 :: 돼지개발자 (0) | 2019.01.31 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday