코딩테스트

    [백준 15686] 치킨 배달 (Java)

    [백준 15686] 치킨 배달 (Java) 출처 : 링크 삼성 코테 기출문제다. 0은 빈 공간, 1은 집, 2는 치킨집이다. 집과 치킨집의 행렬 값을 저장해두고, 치킨집의 수도 같이 저장한다. 치킨집의 총 개수가 n개면, 1~n개까지 조합을 통해 채택시키고 가장 작은 도서의 치킨 거리를 구하면 된다. 이 문제는 따로 dfs, bfs를 적용하지 않고도 풀 수 있다. 최소 거리만 잘 구해보자 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394..

    [백준 14502] 연구소 (Java)

    [백준 14502] 연구소 (Java) 출처 : 링크 삼성 코테 기출 문제다. 0은 이동가능한 값, 1은 벽, 2는 바이러스다. 벽으로 막혀있지 않고, 바이러스와 인접해있는 0인 곳들은 모두 감염이 된다. 처음 시작 전에, 값이 0인 map에서 3곳에 벽을 세울 수 있다. 따라서 map에 저장된 0의 수를 저장하고, 조합을 통해 벽을 모두 세운 뒤 dfs를 진행했다. 모두 진행한 뒤 가장 많은 안전 영역 수를 출력해주면 되는 문제다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081..

    [백준 16234] 인구 이동 (Java)

    [백준 16234] 인구 이동 (Java) 출처 : 링크 2018년 하반기 삼성 코테 기출이다. DFS와 BFS 모두 사용이 가능하고, 인구 이동이 가능할 때까지 계속 진행해서 횟수를 출력해주면 된다. 이동이 가능한 배열마다 같은 숫자를 저장하도록 2차원 배열을 하나 더 만들었다. (copymap) DFS를 통해 조건에 맞는 이동가능 배열끼리 묶어주고, 해당 map의 값을 모두 더해 평균을 내서 저장시켰다. 평균을 구하는 반복문을 따로 만들어서 사용하면 시간초과로 풀 수 없으므로 먼저 리스트를 생성해 DFS를 호출하는 반복문 안에서 평균 값 계산을 같이 해야 시간을 줄일 수 있었다. 12345678910111213141516171819202122232425262728293031323334353637383..