Dev.baelanche
국어문제에 가깝다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); if(n % 4 == 0 && n % 100 != 0) System.out.println(1); else if(n % 400 == 0) System.out.println(1); else System.out.println(0); } }
각 자리수별로 곱셈을 진행한다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); System.out.println(a * (b%10)); System.out.println(a * ((b/10)%10)); System.out.println(a * (b/100)); System.out.println(a * b); } }
갑자기 단계별 문제에 추가되서 풀어봤다. \, ', " 등의 문자를 처리하는 문제이다. 사실 고양이가 귀여운 문제다. public class Main { public static void main(String[] args) { System.out.println("\\ /\\"); System.out.println(" ) ( \')"); System.out.println("( / )"); System.out.println(" \\(__)|"); } }
감시카메라가 감시 가능한 모든 지역을 탐색하게 한다. 1번은 4가지 경우, 2번은 2가지, 3번은 4가지, 4번도 4가지, 5번은 1가지 경우가 있다. 모든 경우를 완전탐색하기만 하면 되는 문제인데 구현이 좀 까다롭다. public class Main { static int n; static int m; static ArrayList cctv = new ArrayList(); static int ans = Integer.MAX_VALUE; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st..
백트래킹으로 모든 집에 대해 치킨거리를 구해야 한다. 배열을 쓰는 것보다는 집, 치킨집을 리스트에 담아서 구현하는게 빨라서 이중루프로 치킨거리를 구하게 했다. 치킨집 중에 M개 만큼의 치킨집을 골라 스택에 담아 백트래킹으로 탐색했고, 리스트를 쓰든 벡터를 쓰던 상관은 없다. 이 문제 역시 중복없는 완전탐색이 핵심이다. public class Main { static int n; static int m; static ArrayList h = new ArrayList(); static ArrayList ch = new ArrayList(); static Stack choice = new Stack(); static int ans = Integer.MAX_VALUE; public static void main..
백트래킹으로 바이러스를 모두 활성화 해보면서 모든 경우의 수를 체크한다. 시간제한이 굉장히 짧으므로 중복되는 백트래킹이 없어야한다. 예를들어, 바이러스 1번, 2,번 3번 을 활성화 한 후 BFS를 마쳤으면 1번, 3번, 2번 과 같은 경우는 없어야한다. 이는 백트래킹할때 변수를 넘겨주며 현재 활성화 한 바이러스번호 보다 높은 바이러스만을 활성화하게 하면 된다. public class Main { static int n; static int m; static int a[][]; static ArrayList virus = new ArrayList(); static int dx[] = {-1, 1, 0, 0}; static int dy[] = {0, 0, -1, 1}; static int min = Int..
https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터 시계방향 순서대로 주어진다. N극은 0, S극은 1로 나타나있다. 다섯째 줄에는 회전 횟수 K(1 ≤ K ≤ 100)가 주어진다. 다음 K개 줄에는 회전시킨 방법이 순서대로 주어진다. 각 방법은 두 개의 정수로 이루어져 있고, 첫 번째 정수는 회전시킨 톱니바퀴 www.acmicpc.net 문제가 너무 길어 링크로 대체하겠다. 연속으로 시뮬레이션 문제를 풀었다. 삼성 역량 평가 문제들은 알고리즘 지식 보다 문제해결능력에 ..
구현만 잘하면되는 시뮬레이션 문제이다. N*N의 나무 배열에 여러개의 나무가 있을 수 있으므로 기본 배열이 아닌 리스트로 구현했다. 하지만 어린 나무부터 양분을 먹는 과정에서 리스트의 정렬이 시간초과를 야기하여 우선순위큐로 바꾸었다. 이러고도 30% 정도에서 시간초과가 발생되었고 죽은 나무를 보관하는 큐(원래 리스트였다)는 일반 배열로 바꾸어 정수값을 더해주는 형태로 바꿨다. 이 과정에서 pop, push 하는 횟수가 줄어들어 문제를 해결할 수 있었다ㅜㅜ 문제는 어렵지 않으므로 정확한 구현 + 시간절약 에 중점을 두어 풀어야 한다. public class Main { public static void main(String[] args) throws Exception { BufferedReader br =..