Algorithm

Algorithm/Java

[백준] 10026 적록색약

https://www.acmicpc.net/problem/10026같은 영역의 경우, 영역을 다 찾으면서 visited 처리를 해야 하기 때문에 dfs 방식으로 풀었다.다음 dfs 재귀 호출을 하기 전에 무조건 visited 처리를 해야 중복 처리가 되지 않을 것 같다!적록색약 버전의 경우, R과 G를 같은 것으로 처리해주기 위해 영역을 찾는 함수를 바꿔 적기에는 중복되는 부분이 너무 많기 때문에, 정상 버전을 먼저 처리한 후 map에 저장되어 있는 'G'를 모두 'R'로 바꿔버린 후 영역 체크 함수를 호출하였다.import java.io.BufferedReader;import java.io.InputStreamReader;public class Main { static int[] dx = new ..

Algorithm/Java

[백준] 21736 헌내기는 친구가 필요해

https://www.acmicpc.net/problem/21736BFS 기반으로 queue에 방문할 좌표를 넣어 진행한다.방문 표시용 배열을 따로 사용하지 않고, queue에 좌표를 넣은 후 바로 방문 표시 'V' 값을 넣는다.단, 방문 표시를 하기 전 해당 좌표가 사람인지 확인한 후, 사람일 경우 개수를 추가하고 방문 표시를 해야 한다!'X'일 경우 벽이기 때문에 queue에 좌표를 추가하지 않는다. 방문한 점일 경우에도 추가하지 않는다.import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.*;public class Main { public void solution() throws Exception{ ..

Algorithm/Java

[백준] 14940 쉬운 최단거리

https://www.acmicpc.net/problem/14940지도 값으로 입력된 값들을 지도에 바로 입력하지 말고!! 목표지점인지/갈수있는곳인지/갈수없는곳인지 구별해서(2) 목표 지점일 경우 queue에 추가하고 방문했다고 표시(1) 갈 수 있는 곳일 경우, 갈 수 있지만 못 갈 경우를 대비해서 -1을 넣음(0) 갈 수 없는 경우, 0으로 표시queue에서 좌표를 뺀 후, 움직일 수 있고 방문하지 않은 바로 앞뒤위아래 좌표일 경우 거리+1한 해당 좌표값을 넣고 queue에 추가한다. 또한 그 직후 visited 표시를 해 주어야 queue를 돌면서 좌표를 중복으로 넣지 않는다!! queue에서 pop 한 뒤에야 visited 표시를 하는 걸로 했더니, 좌표를 중복되게 넣었는지 메모리 초과가 됐다.i..

Algorithm/Java

[백준] 10451 순열 사이클

https://www.acmicpc.net/problem/10451순열 사이클의 개수를 구하는 문제 -> DFSimport java.io.BufferedReader;import java.io.InputStreamReader;import java.util.*;public class Main { public void solution() throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); int t = Integer.parseInt(br.readLine()); int n; ..

Algorithm/Java

[백준] 2805 나무 자르기

https://www.acmicpc.net/problem/2805이런식으로 풀면 틀림!! // 틀린 답import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.*;public class Main { public void solution() throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int n = Integer.parseInt(st.nextToken()); ..

Algorithm/Java

[백준] 9663 N-Queen

https://www.acmicpc.net/problem/9663한 줄(가로, 세로)에 퀸은 하나만 배치할 수 있다.퀸끼리 대각선에서 만나서는 안 된다.백트래킹 문제로, DFS 기반으로 전개하면서 조건이 맞지 않으면 바로 직전으로 돌아가 다음 순서를 수행한다.import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;public class Main { int ans=0; public void solution() throws Exception{ BufferedReader br = new BufferedReader(new InputStreamRe..

Algorithm/Java

[백준] 1436 영화감독 숌

https://www.acmicpc.net/problem/1436숫자 앞 뒤로 문자열을 붙여서, 그 크기를 비교하며 더 작은 값을 사용하면 될 것 같았는데 그냥 브루트포스로 푸는 문제였다...^^:import java.io.BufferedReader;import java.io.InputStreamReader;public class Main { public void solution() throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int cnt=0; long an..

Algorithm/Java

[백준] 1654 랜선 자르기

https://www.acmicpc.net/problem/1654브루트포스로 1부터 랜선 중 최대 길이까지 모두 테스트해보도록 하면 시간 초과가 뜬다!처음 브루트포스로 작성한 코드는 아래 있다.// 브루트포스, 시간 초과로 실패함import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { public void solution() throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = n..

Algorithm/Java

[백준] 1697 숨바꼭질

https://www.acmicpc.net/problem/1697계산을 통해서 2배할지 한 칸씩 움직일지 하는 것은 최적의 해를 보장하지 않기 때문에, BFS를 사용해야 한다.또한 이전에 방문한 좌표일 경우, 이전의 시간보다 오래 걸린 후 방문이라면 저장하지 deque에 저장하지 않는다.이전에 방문했는데 시간이 준 경우일 때 deque에 추가하고, 시간도 업데이트 한다.수의 범위가 십만이므로 해당 사이즈에 맞는 배열을 만들어 사용하였다. (n, k 누가 큰 지 모름!!!)또한 좌표의 범위가 0에서 십만 사이를 넘지 않도록 중간에 조건을 꼭 넣어주어야 한다!! 나는 이 오류를 잡지 못해서 IndexOutOfBounds로 고생함..import java.io.BufferedReader;import java.i..

Algorithm/Java

[백준] 2231 분해합

https://www.acmicpc.net/problem/2231한 자릿수를 처리해 주는 것이 관건이다.한 자릿수가 들어올 경우, 짝수면 n/2인 수로 구성될 수 있기 때문에 n/2를 출력하고, 홀수면 불가능하기때문에 0을 출력해야 한다! 아래 반복문을 시작하기 전에 분기가 갈리게 하였다.import java.io.BufferedReader;import java.io.InputStreamReader;public class Main { public void solution() throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parse..

yoursin
'Algorithm' 카테고리의 글 목록 (11 Page)