본문 바로가기

백준 알고리즘21

백준 20056 마법사 상어와 파이어볼 - 삼성 SW 역량 테스트 기출 백준 20056 마법사 상어와 파이어볼 - 삼성 SW 역량 테스트 기출 1. 문제 링크 https://www.acmicpc.net/problem/20056 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net 2. 문제 해결에 대한 아이디어 1. 이 문제는 꼼꼼히 보지 않으면, 안 되는 문제이다. 요구하는 조건이 많다. 2. 파이어볼은 8방향으로 움직이며, 격자를 벗어나게 되는 경우 N행 1행, N열 1열로 넘어갈 수 있다. 3. 파이어볼은 한 칸에 여러개가 있으므로, List.. 2021. 9. 9.
백준 14503 로봇 청소기 - 삼성 SW 역량 테스트 기출 백준 14503 로봇 청소기 - 삼성 SW 역량 테스트 기출 1. 문제 링크 https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 2. 문제 해결에 대한 아이디어 1. 단순 구현 문제긴 하나, 로봇의 움직임이 꽤나 복잡하므로 꼼꼼하게 구현해야 한다. 2. Robot 클래스를 만들어, 위치와 방향을 갖도록 했다. 3. 로봇의 움직임은 회전-> 이동의 두 단계로 구성되어 있다. . 먼저 회전을 시키면서 이동할 수 있는 칸이 있는지 탐색한다. . 이동할.. 2021. 9. 8.
백준 17142 연구소 3 - 삼성 SW 역량 테스트 기출 백준 17142 연구소 3 - 삼성 SW 역량 테스트 기출 1. 문제 링크 https://www.acmicpc.net/problem/17142 17142번: 연구소 3 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고 www.acmicpc.net 2. 문제 해결에 대한 아이디어 1. 이 문제에서 생각해야하는 로직은 크게 2가지였다. 2. 바이러스를 놓을 수 있는 위치 중 M 개를 골라 각 케이스 별로 조사해야 한다. . 이는 조합을 활용하여 쉽게 해결할 수 있다. . 한 케이스가 끝난 후 연구소 배열과 방문 배열을 초기화해줘야 한다. 3. 비활성 바이러스는 이미 전파되어 있.. 2021. 9. 8.
백준 2174 로봇 시뮬레이션 백준 2174 로봇 시뮬레이션 1. 문제 링크 https://www.acmicpc.net/problem/2174 2174번: 로봇 시뮬레이션 첫째 줄에 두 정수 A, B가 주어진다. 다음 줄에는 두 정수 N, M이 주어진다. 다음 N개의 줄에는 각 로봇의 초기 위치(x, y좌표 순) 및 방향이 주어진다. 다음 M개의 줄에는 각 명령이 명령을 내리는 순 www.acmicpc.net 2. 문제 해결에 대한 아이디어 1. input의 2차원 배열 인덱스가 좌측 하단부터 시작되므로, 익숙한 형태로 보정해야 한다. 2. 명령 정보를 담을 Command 클래스, 로봇 정보를 담을 Robot 클래스가 필요하다. 3. Robot 타입의 2차원 배열을 선언하고, 그 위에서 로봇을 움직인다. 4. 나머지는 문제에서 요구하.. 2021. 9. 7.
백준 7576 토마토 백준 7576 토마토 1. 문제 링크 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 2. 문제 해결에 대한 아이디어 1. input으로 토마토 상자에 대한 정보를 받을 때, 익은 토마토의 위치를 큐에 담는다. 2. 큐가 빌 때까지 BFS를 통해 안 익은 토마토를 익게 한다. 3. 이 때 weight 배열에 토마토가 익은 날짜를 기록한다. 4. BFS가 끝나면 토마토 상자를 순회하며 안 익은 토마토가 있는지 확인하고, 최대가중치.. 2021. 9. 7.
백준 1012 유기농 배추 백준 1012 유기농 배추 1. 문제 링크 https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 2. 문제 해결에 대한 아이디어 input으로 들어온 2차원 배열을 순회하며 1(배추가 심어져 있는 땅)에 대해 BFS를 수행한다 BFS를 수행한 카운트를 출력한다. 3. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.ut.. 2021. 9. 6.