알고리즘(30)
-
[백준/1325/Java] 효율적인 해킹 - BFS/DFS 풀이
문제 www.acmicpc.net/problem/1325 1번 컴퓨터 순으로 신뢰한다고 생각해보겠습니다. 그러면 5번 컴퓨터를 해킹하면 더 이상 해킹할 수 있는 컴퓨터가 없으면 ⑤ = 0 입니다. 3번 컴퓨터를 해킹하면 3을 신뢰하는 5번 컴퓨터를 해킹할 수 있으므로 ③ = 1 입니다. 1번 컴퓨터를 해킹하면 3을 해킹할 수 있고 3번 컴퓨터를 신뢰하고 5까지 해킹할 수 있습니다. 따라서, ① = 2입니다. 예제풀이 백준온라인 문제의 예제에서 나온 번호를 그래프로 그려보면 이렇게 나옵니다. 신뢰하는 관계를 방향대로 읽어가면서 해킹가능한 수를 하나씩 더하면 각 컴퓨터별로 동시에 해킹할 수 있는 개수가 나옵니다. 각 컴퓨터 번호별로 동시에 해킹할 수 있는 수는 제가 소스에서 주석처리를 풀면 확인할 수 있도록..
2021.02.01 -
[백준/2178/Java] 미로탐색 - BFS 풀이
문제 www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 문제를 먼저 풀고 오신 다음에 풀이를 보시는 것을 추천드립니다. 이 문제의 풀이는 BFS/DFS 외에도 다양한 방법이 있을 수 있으며 제가 보여드리는 풀이는 그 중 하나입니다. 문제분석 1은 이동할 수 있는 칸이고, 0은 이동할 수 없는 칸입니다. (1, 1)에서 출발하여 (N, M) 위치로 이동할 때 지나야 하는 최소 칸 수를 구해야 합니다. 입력 첫째 줄에 N, M이 주어집니다. (2 0 && d[i][j - 1] == '1' && ..
2021.01.29 -
[백준/7576/Java] 토마토 - BFS 풀이
문제 www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 문제를 먼저 풀고 오신 다음에 풀이를 보시는 것을 추천드립니다. 이 문제의 풀이는 BFS 외에도 다양한 방법이 있을 수 있으며 제가 보여드리는 풀이는 그 중 하나입니다. 이 글은 BFS 알고리즘으로 2차원 배열을 사용해서 푸는 것을 알아보는 글이라서 BFS로 풀어보겠습니다. 문제분석 하루가 지나면 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들이 익습니다. 인접한 곳은 왼쪽, 오른쪽,..
2021.01.28 -
[백준/1697/Java] 숨바꼭질 - BFS 풀이
BFS (너비 우선 탐색, Breadth-First Search) 알고리즘에서 기본적인 문제 하나를 풀어보도록 하겠습니다. 문제 1697번: 숨바꼭질 (acmicpc.net) 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 문제를 먼저 풀고 오신 다음에 풀이를 보시는 것을 추천드립니다. 이 문제의 풀이는 BFS 외에도 다양한 방법이 있을 수 있으며 제가 보여드리는 풀이는 그 중 하나입니다. 이 글은 BFS 알고리즘으로 1차원 배열을 사용해서 푸는 것을 알아보는 글이라서 BFS로 풀어..
2021.01.21 -
[알고리즘] 백준 온라인 저지 사이트 - 문제 채점
지난 시간에 이어서 백준 온라인 저지 사이트 사용법을 알아보도록 하겠습니다. 문제 선택 및 풀이 연습삼아 간단한 코딩 문제 하나를 풀어보도록 하겠습니다. www.acmicpc.net/problem/1000 1000번: A+B 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 소스 제출 문제를 다 푸셨으면 문제 번호 옆에 보시면 "제출"이 있습니다. 제출을 클릭해주세요. 본인이 푸셨던 연어를 선택하시고 소스코드를 넣으시면 됩니다. 저는 자바를 주로 사용하므로 자바 기준으로 설명드리겠습니다. 자바로 제출하실 때는 클래스명을 Main을 하셔야 합니다. 제가 테스트로 작성해서 제출한 소스입니다. public class Main { public stat..
2020.12.11 -
[알고리즘] 백준 온라인 저지 사이트 소개
삼성 소프트웨어(SW) 테스트 또는 SW검정을 준비하시는 분들을 위하여 알고리즘 관련 내용을 포스팅하려고 합니다. 알고리즘을 공부하면 내가 만든 소스가 맞는지 확인하기가 어렵습니다. 무조건 알고리즘 책대로 하는 건 내 실력이 느는 것 같지 않고 어떻게 동작하는지 이해하기 어려울 때가 있습니다. 내가 만든 소스를 직접 돌려서 답이 맞는지 확인할 수 있다면 다양한 방법을 사용해서 풀어볼 수도 있기 때문에 실력 향상에 도움이 됩니다. 알고리즘 문제은행을 가지고 있는 사이트들이 많지만 저는 그 중에서 백준 온라인 저지 사이트를 주로 사용하였습니다. - Baekjoon Online Judge : https://www.acmicpc.net/ 문제 소스 제출 및 채점 방법 글이 너무 길어져서 별도 글로 작성하였습니다..
2020.12.10