-
알고리즘 Java 풀이
[백준] 2468번: 안전 영역 (JAVA 풀이)
문제 https://www.acmicpc.net/problem/2468풀이1. input을 받으면서 HashSet에 지역의 높이정보를 저장했다. HashSet을 이용한 이유는, 중복저장을 하지 않기 위함과 해당 높이를 활용하여 물높이를 높일 것이기 때문이다. 이게 무슨소리냐면, 예를들어, 예제 입력1 같은 경우에는 높이 정보가 골고루 되어있어서 2부터 9까지 반복문으로 물의 높이를 올려가면서 안전영역을 계산할 수 있겠지만 만약에,41 1 1 1100 100 100 1001 1 1 1100 100 100 100이런 경우면은 1부터 100까지 물의 높이를 1씩 증가하는 것은 비효율적이라고 생각해서 Set에 높이정보를 따로 저장한 것이다.추가로, HashSet은 HashMap기반으로 만들어져 있어서 정렬이 되..
-
알고리즘 C++ 풀이
[백준] 17141번: 연구소2 (C++ 풀이)
문제 https://www.acmicpc.net/problem/17141풀이1.입력으로 주어진 바이러스를 놓을 특정위치 중에 내가 놓을곳 m개를 골라야 한다.나는 입력을 받으면서 따로 pair place[10]배열에 바이러스를 놓을 좌표를 저장해두었다.DFS로 place배열의 인덱스를 가지고 그 중에 m개의 장소를 골랐다. 2.m개의 장소를 고르고 나면 그 부분을 출발점으로 두어야한다.vis[x][y]는 0으로 두고 큐에 넣는다. (vis배열은 -1로 초기화되어있고, 퍼져나가는 시간을 저장해둘것이다.)m개의 장소에 대해 큐에 모두 넣고 BFS를 시작한다. 3.BFS는 아직 방문하지 않았고(vis == -1), 맵이 0이거나 2인 부분을 방문한다. 4.BFS로 vis배열을 모두 채우고, 이중for문으로 v..
-
알고리즘 C++ 풀이
[백준] 1938번: 통나무 옮기기 (C++ 풀이)
문제 https://www.acmicpc.net/problem/1938풀이하나하나 다~~ 구현하면 되는 문제이다.1. 통나무의 가운데 좌표와 모양 정보만 가지고 진행하면된다. 도착지의 가운데 좌표와 모양정보도!2. vis[x][y][통나무의 모양(ㅡ또는ㅣ)] : 이렇게 vis배열을 3차원으로 두고 BFS로 방문하면 된다.3. 통나무의 모양이 ㅡ인지 ㅣ 인지, 통나무가 있어야할 곳에 1이 있는지(이동할 수 있는 곳인지) 일일이 체크하면서 큐에 넣어야한다. 4. 통나무의 가운데 좌표와 모양이 도착지의 가운데 좌표와 모양과 같다면 BFS를 끝내면된다! 그 때 큐에 가지고 있는 현재 이동한 횟수를 출력해주면된다. 코드 https://github.com/ziwonii24/Algorithm/blob/master/B..
-
알고리즘 C++ 풀이
[백준] 10093번: 숫자 (C++ 풀이)
문제https://www.acmicpc.net/problem/10093 풀이A+1부터 B전까지 정수를 for문으로 출력했다.대신 A, B는 최대 10^15까지 이므로 long long 타입이다. (for문 속 i도 long long 타입이다.)**A와 B가 같을때, A가 B보다 클때와 같은 예외사항을 고려하여야한다. 코드https://www.acmicpc.net/source/12053810 결과
-
알고리즘 C++ 풀이
[백준] 2776번: 암기왕 (C++ 풀이)
문제https://www.acmicpc.net/problem/2776 풀이이분탐색으로 풀었다. (이분탐색 설명 ☞ https://where-i-go.tistory.com/15)테스트케이스가 여러개일수도 있으므로 매번 초기화하는 것에 유의하여야 하고,cin, cout 보다는 scanf, printf 가 더 빠르고 printf보다는 puts가 더 빠르다는 것에 유의하자! 코드https://github.com/ziwonii24/Algorithm/blob/master/Baekjoon/2776.cpp 결과