목록알고리즘 (116)
코드굽는 타자기
링크 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 문제설명 열쇠를 돌리면서 자물쇠랑 맞물리면 풀린다 문제풀이 0, 90, 180, 270 도 회전을 한 열쇠를 하나하나 맞춰보면 된다. 회전은 전치행렬 + 좌우대칭하면 90도 회전이다. 사실 다른 규칙을 모르겠다... 열쇠를 하나하나 맞출때 경계검사 하나하나 하기 싫어서 padding(겉에 추가 행렬공한 만들어 줌) 작업을 했다. Key : M^2 Lock : N^2 Padded Map : {(M-1) + N + (M-1)}^2 문제코드 public class Solution60059_자물쇠와_열쇠 { pu..
링크 코딩테스트 연습 - 블록 이동하기 [[0, 0, 0, 1, 1],[0, 0, 0, 1, 0],[0, 1, 0, 1, 1],[1, 1, 0, 0, 1],[0, 0, 0, 0, 0]] 7 programmers.co.kr 문제설명 깊이&너비 우선탐색 + 시뮬 문제풀이 상하좌우 이동말고 축 기준으로 돌리면서 이동가능한 경로 탐색 문제이다. 2칸을 차지하는 것을 기억하기위해서 중간 지점을 visited로 관리한다. BFS로 탐색했다. visit 처리해서 DFS도 될듯. 문제코드 package programmers; import java.util.LinkedList; public class Solution60063_블록_이동하기 { public static int[][] dir = { {-1,0}, {0,1}..
링크 17140번: 이차원 배열과 연산 첫째 줄에 r, c, k가 주어진다. (1 ≤ r, c, k ≤ 100) 둘째 줄부터 3개의 줄에 배열 A에 들어있는 수가 주어진다. 배열 A에 들어있는 수는 100보다 작거나 같은 자연수이다. www.acmicpc.net 문제설명 BFS,DFS인줄알고 풀었는데 시뮬이었다 하라는대로 하면됨 문제풀이 숫자개수 세아리는건 frequency Array생성함(Hashmap만들어도 됐음) R연산 C연산 각각 처리해줘야 함. 문제코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Comparator; import java.uti..
링크 15685번: 드래곤 커브 첫째 줄에 드래곤 커브의 개수 N(1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 드래곤 커브의 정보가 주어진다. 드래곤 커브의 정보는 네 정수 x, y, d, g로 이루어져 있다. x와 y는 드래곤 커� www.acmicpc.net 문제설명 시뮬레이션 문제풀이 세대에 걸쳐서 선을 긋고, 네 꼭지점에 선이 걸쳐있는 격자 칸의 개수를 구한다. 문제코드 import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.u..