코딩테스트/백준 16

[백준] 2467.용액 (Swift)

[백준] 2467.용액 (Swift) https://www.acmicpc.net/problem/2467 2467번: 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 오름차순으로 입력되며, 이 수들은 모두 - www.acmicpc.net 풀이 투포인터로 해결할 수 있는 문제입니다. 용액들의 값은 정렬된 상태로 주어지기 때문에 특성값이 0에 가까워지려면 더해지는 두 용액의 절대값의 차이가 작아야 합니다. 그렇기 때문에 초기 포인터는 양쪽 끝, 즉 최소값과 최대값을 가리키고 있어야 합니다. 2개의 포인터가 가리키는 값을 더한 다음 절대값을 씌워줍니다. 해당 값이 작을수록 0에 가깝다는 의미이..

[백준] 1484.다이어트 (Swift)

[백준] 1484.다이어트 (Swift) https://www.acmicpc.net/problem/1484 1484번: 다이어트 성원이는 다이어트를 시도중이다. 성원이는 정말 정말 무겁기 때문에, 저울이 부셔졌다. 성원이의 힘겨운 다이어트 시도를 보고만 있던 엔토피아는 성원이에게 새로운 저울을 선물해 주었다. www.acmicpc.net 풀이 문제에서 나오는 G 는 (현재)^2 - (예전)^2 으로 표현할 수 있습니다. G 가 자연수이기도 하고 문제를 읽어보면 현재 몸무게가 예전 몸무게보다 값이 크다는 것을 알 수 있습니다. 문제의 조건을 만족하는 모든 경우의 수를 출력해야하기 때문에 예전 몸무게를 1, 현재 몸무게를 2라고 생각하고 차례차례 탐색해보겠습니다. (현재)^2 - (예전)^2 라는 식을 조건..

[백준] 5014.스타트링크 (Swift)

[백준] 5014.스타트링크 (Swift) https://www.acmicpc.net/problem/5014 5014번: 스타트링크 첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다. www.acmicpc.net 풀이 시작층에서 목표층까지 도달하기 위해 버튼을 눌러야하는 최소 횟수를 구해야 합니다. 버튼은 위, 아래 2개가 존재하기 때문에 현재 있는 층에서 위로 가는 버튼을 누른다, 아래로 가는 버튼을 누른다 2가지 경우의 수를 생각해볼 수 있습니다. 이렇게 생각하면 간단하게 구현할 수 있을 것 같지만, 신경써야 하는 점이 크게 2가지가 있습니다. 이미 방문한 층에서는 어떤 ..

[백준] 1976.여행 가자 (Swift, Java)

[백준] 1976.여행 가자 (Swift, Java) https://www.acmicpc.net/problem/1976 1976번: 여행 가자 동혁이는 친구들과 함께 여행을 가려고 한다. 한국에는 도시가 N개 있고 임의의 두 도시 사이에 길이 있을 수도, 없을 수도 있다. 동혁이의 여행 일정이 주어졌을 때, 이 여행 경로가 가능한 것인 www.acmicpc.net 풀이 1. BFS 입력은 인접행렬로 표현된 그래프가 주어지고, 마지막 줄에는 방문할 노드들이 순서대로 주어집니다. 처음에는 단순히 방문한 노드들을 차례대로 2개씩 뽑아서 BFS 를 진행할 생각이었습니다. 최단 경로가 존재한다면 true 를 리턴하고, 존재하지 않는다면 false 를 리턴하는 방식으로 접근하면 된다고 생각했습니다. 하지만 m 번만..

[백준] 16197.두 동전 (Swift)

[백준] 16197.두 동전 (Swift) https://www.acmicpc.net/problem/16197 16197번: 두 동전 N×M 크기의 보드와 4개의 버튼으로 이루어진 게임이 있다. 보드는 1×1크기의 정사각형 칸으로 나누어져 있고, 각각의 칸은 비어있거나, 벽이다. 두 개의 빈 칸에는 동전이 하나씩 놓여져 있고, www.acmicpc.net 풀이 주어진 2차원 배열 위에서 최단 거리를 찾아야 하니 BFS 로 해결할 수 있는 문제입니다. 다만 일반적인 BFS 문제와 조금 다른 점은 2개의 포인트가 동시에 같은 방향으로 움직인다는 것입니다. 움직이는 동전 2개 중 오직 1개만 보드 밖으로 나가게 되거나 움직이는 횟수가 10 보다 커지면 BFS 는 종료되어야 합니다. 동전이 보드를 탈출하지 못하..

[백준] 10830.행렬 제곱 (Swift, Java)

[백준] 10830.행렬 제곱 (Swift, Java) https://www.acmicpc.net/problem/10830 10830번: 행렬 제곱 크기가 N*N인 행렬 A가 주어진다. 이때, A의 B제곱을 구하는 프로그램을 작성하시오. 수가 매우 커질 수 있으니, A^B의 각 원소를 1,000으로 나눈 나머지를 출력한다. www.acmicpc.net 문제 크기가 N*N인 행렬 A가 주어진다. 이때, A의 B제곱을 구하는 프로그램을 작성하시오. 수가 매우 커질 수 있으니, A^B의 각 원소를 1,000으로 나눈 나머지를 출력한다. 첫째 줄에 행렬의 크기 N과 B가 주어진다. (2 ≤ N ≤ 5, 1 ≤ B ≤ 100,000,000,000) 둘째 줄부터 N개의 줄에 행렬의 각 원소가 주어진다. 행렬의 각 ..