Dev.baelanche
총감독관은 시험장마다 1명 있으므로 (응시자의 수 - B) 를 응시장마다 해준다. 남은 응시자는 C로 나누어주어 최소 수에 더해준다. 쉬운 문제임에도 불구하고 정답률이 낮은편인데, 아마 (응시자의 수 - B)의 과정에서 이 수가 음수가 되었을때의 예외를 고려하지 못해서인게 아닐까 싶다. public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; int n = Integer.parseInt(br.readLine()); int a[] = new int[n]; st..
문제에서 요구한대로 해결해야하는 시뮬레이션 문제이다. 낚시 -> 상어의 이동 을 반복하며 잡은 상어의 크기를 누적해서 더한다. 두마리 이상의 상어가 같은 위치에 머물게 되면 가장 큰 상어만 남게되는 부분만 유의하면 된다. public class Main { static int R; static int C; static int m; static Shark a[][]; static ArrayList list = new ArrayList(); static int sum = 0; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in));..
퇴근전에 5분만에 풀 수 있는 문제를 찾다가 이놈으로 골랐다. n이 최대 100000보다 작으므로 int 형으로 충분히 구현가능하여 문제에서 요구한대로 모든 약수의 합과 n을 비교하였다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(true) { StringBuilder sb = new StringBuilder(); int n = sc.nextInt(); if(n == -1) break; int sum = 0; for(int i=1; i
문제가 너무 길어 중략하겠다... 문제는 장황한데 로직 자체는 별거 없다. 삼성 SW 문제들은 기본 탐색 + 문제 해결/구현 조합으로 자주 나오는데 문제에 접근하는것 자체는 어렵지 않아 흥미가 붙는 느낌이다. 문제 진행은 다음과 같다. 1. BFS 로 1회 탐색하며 문제에서 요구하는 대로 미세먼지를 퍼트린다. 2. 공기청정기를 문제에서 요구하는 대로 작동시켜 미세먼지를 뒤로 민다. 3. 입력받은 시간만큼 반복한 후 미세먼지의 양을 출력한다. 미세먼지 확산은 확산 과정에서 합연산으로 먼지가 쌓이므로 먼저 BFS를 1회 마친 후 큐에 담겨있는 노드들을 빼내면서 배열을 다시 채워준다. 그리고 다음 BFS에 미세먼지의 위치들을 큐에 담아 진행한다. 이때 공기청정기의 위치도 잊지말고 채워준다. 공기청정기 순환은 ..
BFS + 구현으로 풀었다. 인구이동을 시작할때 모든 노드에 대해 탐색을 시도해야 하므로 한번의 BFS만을 해서는 안된다. while(b) { cnt++; b = false; allbfs(); } public static void allbfs() { visited = new boolean[n][n]; for(int i=0; i
백트래킹으로 가능한 모든 팀을 구성한 뒤 최솟값을 구했다. 위의 예제로 설명하겠다. 1. 인덱스별로 DFS를 한다. 2. n/2 일때 방문한 노드2개 방문안한 노드2개 이므로 방문한 쪽/ 안한 쪽으로 팀을 나눈다. 3. 배열이나 리스트에 각 노드를 담아서 능력치 차이를 계산한다. 백트래킹을 제외하면 자기 스타일대로 구현을 하면 된다. public class Main { static int n; static int a[][]; static boolean visited[]; static int min = Integer.MAX_VALUE; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader..
문제 전문 이미지는 생략하도록 하겠다. N과 M 시리즈는 모~~두 백트래킹 문제로 시리즈별로 난이도 차이는 거의 없다. 백트래킹을 모른다면 간단히 공부하고 오거나 천재라면 필자의 빈약한... 소스를 보고 이해하면 되겠다. 15649번 : N과 M(1) ...더보기 중복없는 수열을 뽑아야 하므로 방문배열을 만들어 주어야 한다. 낮은 번호부터 순서대로 진행하며 배열체크만 해주면 된다. public class Main { static int n; static int m; static boolean visited[]; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStr..
단순 구현 문제다. 반복문 두번으로 가로줄, 세로줄을 긋고 두번째 줄을 예외처리 하는 방법으로 풀었다. 두번째 줄은 공백이 없으니 이 부분 주의해야한다..! public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int width = 1 + (n-1)*4; int height = 1; for(int i=0; i