알고리즘 8

[백준][Java] 숨바꼭질 3

문제링크 https://www.acmicpc.net/problem/13549 13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net # 문제 풀이 수빈이가 할 수 있는 이동은 크게 두가지가 있습니다. 걷기와 순간이동입니다. 둘은 각각 아래와 같습니다. 걷기 -> 1초, x+1 or x-1 순간이동 -> 0초, 2x 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구해야합니다. 저는 탐색 조건을 아래와 같이 정했습니다. 1. 이동했을 때, 수빈이의 위치가 정해진 범위를 벗..

알고리즘 2023.05.31

[SWEA][Java] 탈주범 검거

문제 링크 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PpLlKAQ4DFAUq SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com # 문제 풀이 구현 + BFS 이 문제는 파이프가 연결된 곳만 이동할 수 있는데, 파이프가 연결된 것을 확인하기위해서 지금 있는 곳과, 다음에 위치하게 될 장소를 확인해야했습니다. 파이프의 모양에 따라 이동할 수 있는 방향이 달라서, 파이프의 종류에 따라서 이동할 수 있는 방향을 담은 배열을 만들어줬습니다. 그 배열에 들어있는 값은 dx, dy의 index를 기준으로 방향 값을 의미합니다..

알고리즘 2023.05.25

[SWEA][Java] 보급로

문제 링크 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15QRX6APsCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com # 문제 풀이 BFS 출발지에서 도착지까지의 최소 거리를 구하는 것이 아니라 최소 비용을 구하는 것이기 때문에 Node 클래스를 하나 만들어서 BFS를 다 돌리고 난 이후에 나온 값 중 가장 작은 값을 출력했습니다. 방문 처리와 최소비용을 같은 배열에서 처리했습니다. 이전 방문해서 나왔던 값보다 현재 방문해서 나온 값이 더 작은 경우에만 값을 업데이트하고 큐에 넣어줬습니다. 출발지와 도착..

알고리즘 2023.05.23

[SWEA][Java] 수영장

문제링크 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PpFQaAQMDFAUq SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com # 문제풀이 구현 + DFS 수영장 이용권 중 1일권, 1달권, 3달권, 1년권을 이용하여 1년 이용 비용을 제일 저렴하게 구하는 문제였습니다. 1일권, 1달권, 3달권을 이용하여 구한 값보다 1년권의 가격이 더 저렴하다면 1년권을 결제하고 1일권과 이용날짜를 곱하여 나온 가격과 1달 이용권의 가격 중 더 저렴한 가격으로 계산하여 다음달로 넘기고 매달 3달권을 시작하는 할 수 있는 것까지 ..

알고리즘 2023.05.22

[SWEA][Java] 프로세서 연결하기

문제 링크 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV4suNtaXFEDFAUf SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com # 문제 풀이 구현 + DFS 어떤 코어를 어떤 방향으로 연결했는지에 따라서 값이 달라질 수 있기 때문에 dfs로 모든 경우의 수를 탐색해야겠다고 생각했습니다. 1. 멕시노스의 가장자리에 위치한 코어는 이미 전원이 연결된 것으로 간주하기 때문에 제외하고 리스트에 넣습니다. 2. dfs로 탐색을 합니다. 파라미터로 어떤 Core인가, 현재 연결된 Core의 개수, 현재 사용한 Wire의 길..

알고리즘 2023.05.21

[java][백준 11066] 파일 합치기

문제 소설가인 김대전은 소설을 여러 장(chapter)으로 나누어 쓰는데, 각 장은 각각 다른 파일에 저장하곤 한다. 소설의 모든 장을 쓰고 나서는 각 장이 쓰여진 파일을 합쳐서 최종적으로 소설의 완성본이 들어있는 한 개의 파일을 만든다. 이 과정에서 두 개의 파일을 합쳐서 하나의 임시파일을 만들고, 이 임시파일이나 원래의 파일을 계속 두 개씩 합쳐서 소설의 여러 장들이 연속이 되도록 파일을 합쳐나가고, 최종적으로는 하나의 파일로 합친다. 두 개의 파일을 합칠 때 필요한 비용(시간 등)이 두 파일 크기의 합이라고 가정할 때, 최종적인 한 개의 파일을 완성하는데 필요한 비용의 총 합을 계산하시오. 예를 들어, C1, C2, C3, C4가 연속적인 네 개의 장을 수록하고 있는 파일이고, 파일 크기가 각각 4..

알고리즘 2023.04.01

[Java][백준 1103] 게임

문제 형택이는 1부터 9까지의 숫자와, 구멍이 있는 직사각형 보드에서 재밌는 게임을 한다. 일단 보드의 가장 왼쪽 위에 동전을 하나 올려놓는다. 그다음에 다음과 같이 동전을 움직인다. 동전이 있는 곳에 쓰여 있는 숫자 X를 본다. 위, 아래, 왼쪽, 오른쪽 방향 중에 한가지를 고른다. 동전을 위에서 고른 방향으로 X만큼 움직인다. 이때, 중간에 있는 구멍은 무시한다. 만약 동전이 구멍에 빠지거나, 보드의 바깥으로 나간다면 게임은 종료된다. 형택이는 이 재밌는 게임을 되도록이면 오래 하고 싶다. 보드의 상태가 주어졌을 때, 형택이가 최대 몇 번 동전을 움직일 수 있는지 구하는 프로그램을 작성하시오. 입력 줄에 보드의 세로 크기 N과 가로 크기 M이 주어진다. 이 값은 모두 50보다 작거나 같은 자연수이다...

알고리즘 2023.03.31

[조합론] 순열, 조합, 중복 순열, 중복 조합, 부분 집합 정리

알고리즘 시험 대비를 위해서 순열, 조합, 중복 순열, 중복 조합, 부분 집합 내용 정리를 하려고 합니다. 순열 서로 다른 n개의 원소에서 r개를 중복 없이 순서에 따라 나열한 것입니다. 예를 들어 1,2,3에서 2개를 골라 나열할 수 있는 경우의 수는 6가지로, (1,2) (1,3), (2,1), (2,3), (3,1), (3,2)가 있습니다. import java.util.Arrays; public class PermutationExample { private static int[] items = {1, 2, 3}; private static int[] permutation; private static boolean[] used; private static int n = items.length; pr..

알고리즘 2023.03.27